基本看过高程等书的人都可以对原型继承,原型链查找侃侃而谈,代码中也可以使用原型完成一些事情,但是,我们对于原型真的彻底搞明白了么?
原型由构造器确定
我们的原型是一个对象,构造器函数有一个属性指向这个对象,prototype;而我们每次new出来的实例也有一个属性指向这个对象,__proto__。为什么说原型是由构造器确定的,因为在new之后,这个实例的原型就已经确定了,实例的__proto__和构造器的prototype都会指向那个原型对象。
var Person=function(){};var p=new Person();
console.log(p.__proto__===Person.prototype); // truePerson.prototype={
say:function(){
console.log("hello");
}
}var t=new Person();
console.log(t.__proto__===Person.prototype); // truet.say(); // helloconsole.log(p.__proto__===Person.prototype); // falsep.say(); // 报错


