浅谈js原型链

150 阅读1分钟

个人理解

原型链是理解js面向对象很重要的一点,主要涉及两个点
1.__proto__
2.__prototype__
举个例子说可能好理解一些,例如:我用function创建一个Person类,
然后用new Person穿件一个对象的实例假如叫p1吧,在Person类的原形,
prototype添加一个方法,例如:play方法,
那对象实例P1如何查到这个play方法呢具体流程是这样的

首先在p1对象实例上查找是否有有play方法,如果有则调用执行,如果没有则用p1.proto(_proto_是一个指向的作用,指向上一层的原型)往创建p1的类的原型上查找,也就是说往Person.prototype上查找,如果在Person.prototype找到play方法则执行,否则继续往上查找,则用Person.prototye.__proto__继续往上查找,找到Object.prototype,如果Object.prototype有play方法则执行之,否则用Object.prototype.__proto__继续再往上查找,但Object.prototpye.__proto__上一级是null,也就是原型链的顶级,结束原型链的查找,这是我对原型链的理解