原型,原型链
原型:
每一个构造函数,都会带有一个 prototype
属性。该属性指向一个对象,该对象称之为 原型对象
。其所有的属性和方法都能被构造函数的实例对象共享访问,因为实例都包含着一个指向原型对象的内部指针 __proto__
。可以通过内部指针 __proto__
访问到原型对象,
原型对象
上默认有一个 constructor
属性,指向其相关联的构造函数。
原型链:
当访问一个对象的某个属性时,会先在这个对象本身属性上查找,如果没有找到,则会去它的__proto__
上查找,即它的构造函数的prototype,如果还没有找到就会再在构造函数的prototype的__proto__
中查找(即上一层构造函数的prototype),这样一层一层向上查找直到Object的prototype结束,这样就会形成一个链式结构,我们称为原型链。我们可以说:它们是继承关系
1.prototype是一个对象属性,其属性值为对象,成为原型对象,原型作用是共享方法。
2.每个对象都有一个属性__proto__指向构造函数的prototype原型对象,__proto__对象原型等价于原型对象prototype,__proto__为对象的查找机制提供了一个方向,或者说是一条路线。
3.原型链:当访问对象的某个属性时,会先在这个对象本身属性上查找,如果没有找到则回去它的__proto__上查找,即它的构造函数上prototype,如果还没有找到,就会再在构造函数的prototype的__proto__中查找,这样一层一层向上查找就会形成一个俩是结构,成为原型链
4.constructor:对象原型(__proto__)和原型对象(prototype)里都有一个属性,constructor属性,它主要用于记录该对象引用了哪个构造函数,他可以让原型对象从新指回原来的构造函数