图中一共标了7条线,就一条一条的讲,讲完了就应该懂了
已知:
1. 函数是对象,原型也是对象-
2. __proto__
每一个对象都有,prototype
是函数特有的
3. 对象的__proto__
属性指向该对象构造函数的 原型(prototype
)
线1.对象f1
的__proto__
属性指向其构造函数的原型(其构造函数:function Foo()
;其构造函数的原型:Foo.prototype
)
线2.function Foo()
是对象,它的__proto__
属性指向Foo()
的构造函数的原型
(Foo()
的构造函数:funtion Function()
;Foo()
的构造函数的原型:Funtion.prototype
)
线3.Foo.prototype
是对象,它的__proto__
属性指向其构造函数的原型(其构造函数:function Object()
;其构造函数的原型:Object.prototype
)
线4.对象o1
的__proto__
属性指向其构造函数的原型(其构造函数:function Object()
;其构造函数的原型:Object.prototype
)
线5.function Object()
是对象,它的__proto__
属性指向其构造函数的原型(其构造函数:function Fuction()
;其构造函数的原型:Function.prototype
)
线6.Fuction.prototype
是对象,它的__proto__
属性指向其构造函数的原型(其构造函数:function Object()
;其构造函数的原型:Object.prototype
)
线7.function Function()
是对象(它也是函数,所以它的构造函数就是function Function()
),它的__proto__
属性指向其构造函数的原型(其构造函数的原型:Function.prototype
)
图来自于:
js中__proto__和prototype的区别和关系? - doris的回答 - 知乎
https://www.zhihu.com/question/34183746/answer/58155878