原型链图示

-
对象拥有原型和构造函数
--proto-- 原型
constructor 构造函数 -
只有函数有原型对象
prototype 原型对象 -
f1是一个实例化 出来的对象
f1的 constructor指向 Foo() -
Foo 是一个构造函数
Foo.prototype 是Foo 的原型对象 -
Foo.prototype 是一个对象
Foo.prototype的constructor指向 Foo -
原型链
1、实例化出来的对象的原型 是 其构造函数的原型对象
2、构造函数的原型对象的原型 是 Object的原型对象
3、Object的原型对象的原型 是 null
以下是4点总结
1、所有构造函数都是Function的实例对象,包括Function自身,所有构造函数的proto都指向Function.prototype,即所有构造函数都继承Function的原型对象。
2、所有原型对象都是Object的实例对象,所有原型对象的proto都指向Object.prototype,即所有原型对象都继承Object的原型对象。
3、Function可通过proto访问自己的原型对象,也可通过prototype访问自己的原型对象。这是因为Function本身也是Function的实例对象,把Function当成构造函数看,它可通过prototype访问原型对象,把Function当成实例对象看,它可通过proto访问原型对象。
4、Object.prototype.proto指向null,原型链访问到这里停止
网友评论