page contents

什么是作用域以及作用域链?

轩辕小不懂 发布于 2022-08-13 13:59
阅读 802
收藏 0
分类:WEB前端开发
4078
Nen
Nen
- 程序员

原型:每一个对象都与另一个对象相关联,那个关联的对象就称为原型。

例如:函数Person有一个属性prototype,指向一个对象,对于普通函数来说没多意义,对于构造函数就有作用了,当使用new操作符时,会把Person.prototype(原型对象)赋值给实例的__proto__(原型实例)属性。

attachments-2022-08-nYZDAzIQ62f740154b174.png

JS有一个原型查找机制,把原来定义在实例上的方法,放到原型对象上去,通过构造函数的new操作,会把原型对象赋值给实例的__proto__属性,那么当使用返回的实例去调用某一个方法的时候,如果实例本身上没有,就去自动去实例的__proto__上去查找,这样达到方法的复用,减少内存开销。

原型链:每一个对象,都有一个原型对象与之关联,这个原型对象它也是一个普通对象,这个普通对象也有自己的原型对象,这样层层递进,就形成了一个链条,这个链条就是原型链。通过原型链可以实现JS的继承,把父类的原型对象赋值给子类的原型,这样子类实例就可以访问父类原型上的方法了。

请先 登录 后评论