__proto__
__proto__属性指向原型对象,也可以理解为父类对象。
prototype
函数的原型对象,给其它对象提供共享属性,函数所独有的。所有对象,都可以作为另一个对象的 prototype。
原型链
当你在访问一个对象属性的时候,如果该对象内部不存在这个属性,那么就回去它的__proto__属性所指向的对象(父类对象)上查找,如果父类对象依旧不存在这个属性,那么就回去其父类的__proto__属性所指向的父类的父类上去查找。以此类推,知道找到 null。而这个查找的过程,也就构成了我们常说的原型链。
constructor
constructor属性是一个对象指向该对象的构造函数。对象所独有属性。
每一个对象都有其对应的构造函数,本身或者继承而来。
原型继承
让子类的原型对象指向父类的实例,当子类的实例找不到对应的属性时,他会沿着原型链往上找。
别放弃,马上柳暗花明了
__proto__与prototype
function Father(){ this.a =1; } // Father是函数对象
let child = new Father() // child是普通对象
- Father._ proto_ === Function.prototype // 函数对象的原型指向函数的原型对象
- Function._ proto_