我很努力地理解以下兩組代碼的區別。原始代碼是the famous Ninja tutorial,我已經簡化了一下。JavaScript:通過原型分配屬性
問題:我想我理解CodeA是如何工作的。 Ninja.prototype.swung = false
正在將一個新屬性分配到function Ninja()
,並且因此ninjiaA.swung
評估爲false。但是,在CodeB中,當我們在開始時聲明function Ninja()
和this.swung = true
時,後面的Ninja.prototype.swung = false
分配不起作用,並且ninjaA.swung
仍然需要評估爲true。我不明白爲什麼後面的作業在CodeB中不起作用。請問有人可以在這方面給我啓發嗎?
CODEa所:
function Ninja(){}
Ninja.prototype.swung = false;
var ninjaA = new Ninja();
ninjaA.swung; //evaluates to false
CodeB:
function Ninja(){
this.swung = true;
}
Ninja.prototype.swung = false; //I'm expecting this changes swung to false,
//but it doesn't.
var ninjaA = new Ninja();
ninjaA.swung; //evaluates to true
非常感謝提前。
+1 - 很好地佈局! – 2010-07-28 00:23:38
我編輯了你的答案以使用'pre'標籤。我發現幾乎幽默的色彩會降低答案的質量。 – ChaosPandion 2010-07-28 00:38:16
@丹 - 謝謝:) @ChaosPandion - 感謝您的改變,現在看起來好多了:) – Anurag 2010-07-28 00:40:00