首先,我们先梳理一下他们之间的关系:每个构造函数都有一个原型对象,原型对象都包含一个指向构造函数的指针,而实例都包含一个指向原型对象的内部指针。
function Person(){
}
//将属性和方法都添加到了person的原型属性prototype中
Person.prototype.name = "nick";
Person.prototype.age = 23;
Person.prototype.state = "signal dog";
Person.prototype.getState = function(){
alert(this.state);
}
var person1 = new Person();
person1.getState(); //signal dog
var person2 = new Person();
person2.getState(); //signal dog
当你创建一个新函数的时候,会自动创建一个prototype属性,这个属性是指向函数的原型对象。并且,默认情况下所有原型对象都会自动获得一个constructor构造函数属性。这个构造函数属性是一个指向prototype属性所在函数的指针。