js原型prototype和原型链__proto__面试题

103 阅读2分钟

前言

我一直在研究原型和原型链,看了很多文章和视频,我觉得我心里是明白了,这个原型和原型链是做什么的,但是我还是决定,写下来,捋一遍,这样,我应该会有一个更清晰的逻辑条理

原型和原型链的关系

原型prototype相当于一个仓库,我们到仓库里去找一个东西,
这个东西就是实例对象的属性,但是怎么找呢?
这个时候,就用到了我们的线索__proto__,
我们通过这个线索去一点一点的去找,
最终,如果有这个属性,那我们根据线索,肯定会找到,
如果没有,那么最终我们这个实例对象中就是没有这个属性的

什么是原型

个人理解:

原型即prototype:相当于一个共享仓库,所有的实例对象的属性,都可以在这个仓库里找到,提高性能
prototype属于显示属性

什么位置可以找到原型呢?

每个函数上都会有一个原型

什么是原型对象?

prototype指向的是一个对象,这个对象被称为原型对象

什么是原型链?

原型链即__proto__:在实例对象中不断查找相关属性的链式方法,叫做原型链
__proto__:属于隐式属性

什么位置上能找到原型链呢?

对象:只要是js对象,都会有一个__proto__,
注意:函数也是对象,所以,函数上也是有__proto__的

注意:

1. 每个函数上都有一个显示原型prototype,有一个隐式原型__proto__
2. 每个对象都有一个__proto__,函数也是对象,所以有__proto__
3. 在原型上prorotype通过__proto__查找实例对象的属性时,会一直找,直到找到这个属性