直接上图!额(⊙o⊙)…,有点乱!不着急,让咱们一步步来理解html
首先先来明确这三个属性的定义:函数
prototype
:指向原型对象
(函数特有属性)__proto__
:指向构造该对象的构造函数的原型对象
constructor
:指回该原型对象中的构造函数步骤分析:prototype
f1.__proto__
指向其构造函数的原型对象,和其构造函数Foo.prototype
指向的是同一个原型对象,同时原型对象能够经过constructor
指回构造函数(其余构造函数同理)Foo.prototype.__proto__
指向了对象类型的原型对象Object.prototype :由于Foo原型对象自己也是一个对象,因此使用__proto__
指向了对象构造函数Object()
的原型对象Object.prototype
Object.prototype
是初始化的原型对象了,因此该对象的构造函数的原型对象为空nullObject.prototype.__proto__ == null
,也就是找不到创造它的对象了Object.prototype
Foo.__proto__
、Object.__proto__
、Function.__proto__
这些构造函数的构造函数都是Function()
,因此它们的构造函数原型对象都是Function.prototype
Function.prototype
是经过Object构造函数建立的,因此其原型对象为Object.prototype
__proto__
属性指向构造该对象的构造函数的原型对象:
__proto__
都指向Object原型对象__proto__
都指向其构造函数的原型对象prototype
属性指向原型对象
:
prototype
属性原型对象
存在constructor
的构造函数,该属性指回其构造函数f.prototype.__proto__ == f.__proto__.__proto__
也就是图中的1+2 == 5+ 6,最终都是指向Object原型对象prototype
、__proto__
两个最终都是指向同一个原型对象__proto__
的属性值为null嘿嘿~当时,只有我和上帝两我的知道写的是什么,而如今只有上帝一我的知道了!code
参考连接:www.cnblogs.com/smoothLily/…cdn