构造函数,实例,原型对象之间的关系和原型链(4)

看图
1.
在这里插入图片描述

2. 每个构造函数都有一个原型对象,通过构造函数prototype指向我们的原型对象.
3. 在原型对象里面有一个constructor属性,通过这个属性指回了构造函数
4. 我们可以通构造函数new一个zs对象实例出来
5. 在实例里面有一个__proto__,它指向的是我们构函数的原型对象.
6. 在实例里面有__proto__,而__proto__里面也有一个constructor属性,constructor属性指回的是我们的构造函数.所以我们的实例也可以指回我们的构造函数

原型链

在这里插入图片描述
可以看到,
对象实例的__proto__指向构造函数的原型对象prototype,
构造函数的原型对象prototype里面的__proto__指向Object的原型对象prototype,
而Object的原型对象prototype指向null,因为他是最顶层了

所以我们称这条链为原型链
说白了就是提供一条查找的线路,
首先看我们实例里面有没有这个成员,没有的话就一层一层的往上找,所以就有了我们的成员查找机制

JavaScript的成员查找机制

1. 访问一个对象的属性(包括方法)的时候,先查找对象自身有没有该属性.
2. 如果没有就查找它的原型(__proto__指向的)
3. 如果还是没有,就查找原型对象的原型(Object的原型对象)
4. 直到最顶层(null)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章