原型:
每个function都有一个prototype,即显式原型,默认是空Object实例对象
每个实例对象都有一个__proto__,即隐式原型
实例对象的隐式原型的值=对应构造函数的显式原型的值
原型链:(别名:隐式原型链)
当访问一个对象的属性时,现在自身属性中查找,有的话返回
如果没有,沿着隐式原型__proto__去找,找到返回
最终没找到,返回undefined
截图来自B站视频,讲的很清楚了
---------------------------------------------------------------------------------------------------------------------------------
能看懂下面这个图就悟了
理解:
(1)function Foo()这个函数,也是Function的实例对象:var Foo=new Function()
Function=new Function()
so,所有函数的隐式原型__proto__都是一样的,因为函数(包括Function)都是Function的实例对象
(2)Object.prototype是原型链的尽头,它的隐式原型__proto__是null
console.log(Object.prototype instanceof Object)返回的是false哦