Javascript 原型链

在JavaScript中,除了null,undefined外,全部的变量均可以当作对象使用对象由函数建立,函数的原型链指向对象,函数也是一种对象,本身定义的函数由Fuction建立。函数

每一个函数都有一个prototype属性和隐藏属性__proto__,prototype的值为一个对象,对象里有一个constructor指向这个函数自己。spa

 除了JavaScript自带的Object有prototype属性外,普通对象没有prototype属性,有隐藏的属性__proto__,指向建立该对象的原型。可是Object对象有prototype属性里面除了constructor外,还有一些共享方法如:hasOwnProperty,isPrototypeOf,toString等等。prototype

         使用new关键字加上函数建立的对象,此对象的隐藏属性__proto__指向的是构造函数的prototype对象,即由构造函数建立的对象可以直接使用构造函数prototype对象中的变量和方法。若是构造函数有显示的返回对象,则建立的函数为返回的对象。code

         每一个函数都有一个prototype原型,每一个对象都有一个__proto__隐藏属性,可为隐式原型。对象

          4个实体:Function(JavaScript自带),Object(Javascript自带),Foo(函数),foo(由函数建立的对象)。blog

function Foo(){};
var foo = new Foo();

          Foo.prototype.constructor--->Foo;继承

          foo.__proto__===>Foo.prototype;ip

          Foo.__proto__===>Function.prototype;原型链

          Foo.prototype.__proto__===>Object.prototype;原型

          Function.__proto__===>Object.prototype;

          Object.__proto__===>Function.prototype;

          Object.prototype.__proto__===>Null。

          新建立的对象沿原型链继承Object.prototype的方法。

相关文章
相关标签/搜索