• JavaScript 对象创建及继承方式


    前言:

           JavaScript 除了null和undefined之外,其他变量都可以当做对象使用。

           JavaScript 的基本数据类型有:number boolean string null  undefined ,其他所有值都是对象。

           JavaScript 的 typeof 只能判断 number boolean string undefined function object 不能判断一些具体的对象类型和null。

           如果要判断对象的具体类型则要使用  Object.prototype.toString.apply(aaa) === "[Object Array]" 来判断,或者根据该对象的特有性质判断,如Array对象有一个特殊属性length。

          JavaScript 的顶层函数(对象),Array,RegExp,Date,String,Object,Function等有prototype属性。

          Array , RegExp ,Date ,String,  Function 都会继承 Object.prototype中的属性和方法。而Object.prototype.__proto__ 为null。

    JavaScript 的对象创建:

         1.由构造函数创建的对象继承自创建该对象的构造函数的prototype

           1.1   var a = new Object(obj);

                   对象 a 会对对象obj进行浅复制,即对象a可以引用对象 obj 中的方法和属性,但是a的原型继承指向的是 Object.prototype。此外,对象a可以修改对象 obj中的属性和方法。

           1.2   var a  = Object.create(obj);

                  对象a的原型继承指向obj,a可以引用obj对象中定义的属性和方法,但是不能对obj中的属性和方法进行修改,当a对obj中的属性和方法赋值时,相当于在对象a中定义属性和方法。

           1.3 var FF = function(){}; var a = new FF();

                  此时对象a的原型继承指向 FF的prototype.

         2.由对象字面量创建的对象

            2.1  var a = [];

                   对象a 继承自 Array.ptototype

            2.2  var a ={};

                   对象a指向 Object.prototype.

    总结:所有的对象都有隐藏的__proto__属性,所有的函数都有__proto__之外,还有一个prototype对象属性。

         

           

     

  • 相关阅读:
    后海日记(6)
    后海日记(6)
    后海日记(5)
    后海日记(5)
    TCP 连接的握手信息详解
    TCP 连接的握手信息详解
    java枚举类型的优势在哪里?--一个实例
    java枚举类型的优势在哪里?--一个实例
    网络基础之网络协议篇
    mysql之innodb引擎的共享表空间和独立表空间
  • 原文地址:https://www.cnblogs.com/wust-hy/p/7686818.html
Copyright © 2020-2023  润新知