首先要理解原型和原型链的概念
原型的概念
js规定每个函数都有一个proto属性,指向另一个对象(自身的原型),函数对象除了proto之外还有prototype属性,当函数作为构造函数创建实例时,该属性就被作为实例对象的原型
原型有三个属性:prototype,proto,constructor 1.prototype 每个函数都有一个prototype属性,这个属性指向函数的原型对象。
2.proto 每个对象(除null外)都会有的属性,叫做__proto__,这个属性会指向该对象的原型。
3.constructor 每个原型都有一个constructor属性,指向该关联的构造函数。
原型链的概念
当一个对象调用自身不存在的属性和方法时,就回去自己的proto关联的前辈prototype对象上去找,如果没找到,就回去该prototype原型[proto]关联的前辈prototype去找,依此类推,直到找到或者返回undefinend这个链式查找的过程就是原型链
总结
查找的过程是一个链式的查找,每一个对象都有一个他自身原型对象的链接,这些链接组建的整个链条就是原型链,拥有相同原型的多个对象,他们的共同特征正是通过这种查找模式体现出来的,最顶层的原型对象就是object.prototype,这个对象中保存了最常用的方法如:toString,valueof,hasownproperty等,因此我们才能在任何对象中使用这些方法