首先,我們先梳理一下他們之間的關係:每個構造函數都有一個原型對象,原型對象都包含一個指向構造函數的指針,而實例都包含一個指向原型對象的內部指針。
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屬性所在函數的指針。