javascript中原型链指向分析

2018.12.23 23:08 阅读 102 评论 0

prototype

  • 分析上图,先从一个简单的例子说起
function Foo () {}
var foo = new Foo()

Foo是一个函数,每个创建的函数都存在一个prototype属性指向它的原型对象。

foo是Foo构造函数的一个实例对象。

每个实例对象都存在一个__proto__属性指向其构造函数的prototype(原型对象)。

也就是:

foo.__proto__ === Foo.prototype
  • 接着往下看

构造函数的prototype是一个对象,此对象是Object的一个实例

Foo.prototype.__proto__ === Object.prototype

其中Object.prototype也是一个对象,但是Object是原始对象的构造函数

Object.prototype.__proto__ === null
  • 接下来说一下函数

上面声明的Foo是一个函数,每个函数都是Function的一个实例对象,而Function本身也是一个函数,所以Function也是Function的一个实例对象。

所以

Foo.__proto__ === Function.prototype
Function.__proto__ === Function.prototype

Function.prototype也是一个对象

Function.prototype.__proto__ === Object.prototype

最后再附上具体的原型链指向

prototype

0 条评论
发布