在讲解之前先记住几个关键点:
1.所有的实例对象都有一个_ proto 属性(即隐式原型)
2.所有的构造函数都有一个prototype属性(即显示原型)
3.实例对象的 proto _属性指向它的构造函数的prototype属性
下面创建一个Fn构造函数:
function Fn(){
this.method1 = function(){
console.log('method1')
}
}
var fn = new Fn()
在这个例子中,fn是Fn的实例,因此fn._ proto _ === Fn.prototype,此时我们在控制台打印Fn.prototype,结果如下所示:
从上图中可以看出Fn.prototype具有一个_ proto _ 属性,且指向Object对象,因此可以推断出Fn.prototype是Object函数的实例对象,即Fn.prototype._ proto _ === Object.prototype,而Object的原型对象是原型链的尽头,因为Object.prototype._ proto _ === null
说了这么多,下面我用一张图来概括一下上面的内容吧
内容就暂且写到这里了,相信聪明的你一看就懂,加油,打工人!