原型与原型链
基础知识复习
每个对象都有自己的原型对象,而原型对象本身,也有自己的原型对象,从而形成了一条原型链条
当试图访问一个对象的属性时,它不仅仅在该对象上搜寻,还会搜寻该对象的原型,以及该对象的原型的原型,依次层层向上搜索,直到找到一个名字匹配的属性或到达原型链的末尾。
对JS中原型与原型对象的理解?(美团)
每个对象都有自己的原型对象,原型对象也有自己的原型对象
构造函数的原型对象指向一个对象,该对象是构造函数实例对象的原型对象
该原型对象的constructor属性指向构造函数本身
对一个构造函数实例化后,它的原型链指向什么?
指向该构造函数实例对象的原型对象
实例对象可以通过_proto_属性访问到该对象
构造函数可以通过prototype属性访问到该对象
所有的构造函数,无论是自定义的还是内置的,它们的原型对象都是同一个对象。
如果你还想继续往下深究,那么上面的图可以扩展成这样:
可以看到,在上面的代码中,我们顺着原型链一层一层往上找,最终到达了 null。
但是目前来看我们这个图还是不完整,既然构造函数的原型对象也是对象,那么必然该对象也有自己的原型,所以完整的图其实如下:
面试题
原型与原型链(美团2019、字节)(33、51、76)
一个构造函数实例化后,它的原型链指向什么?(78)
prototype和_proto_的区别是什么?(143)