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对象属性。

     

       

 

原文地址:https://www.cnblogs.com/wust-hy/p/7686818.html