我讀professional javascript for web developers,他們提出以下幾點:JavaScript的原型邏輯
此代碼:
var friend = new Person();
Person.prototype.sayHi = function(){
alert("hi");
};
friend.sayHi();
但是這個代碼不:
function Person(){
}
var friend = new Person();
Person.prototype= {
constructor: Person,
name: "Nicholas",
age: 29,
job: "Software Engineer",
sayName: function() {
alert(this.name);
}
};
friend.sayName();
我得到的,在第二個例子中,原型是在friend
變量被實例化後定義的,但是在那種情況下,爲什麼第一個例子工作?
我在這方面的專家 - 但你讓其完全覆蓋'property'對象?我認爲你應該在對象聲明中創建你想要的變量,然後使用'Person.prototype.sayName = function(){}'。我在想''prototype'還包含了其他各種與Object相關的東西,您將在第二個示例中完全覆蓋它。 – Sygmoral 2013-03-10 22:33:32
在第一個示例中,您將在第二個示例中添加屬性到原型中 - 覆蓋整個原型。這些案例不具可比性。改變他們看起來相似,你會得到相同的行爲 – zerkms 2013-03-10 22:33:37