2012-11-13 89 views
-1

如何用Javascript中的原型覆蓋屬性?如何用原型覆蓋屬性

代碼

function Test(){ 
    this.prop = false; 
} 

Test.prototype.prop = true; 

var T = new Test(); 
console.log(T.prop); 

這將返回false但應該返回true

+0

不,它不應該。請閱讀[this](https://developer.mozilla.org/en-US/docs/JavaScript/Guide/Inheritance_and_the_prototype_chain)。 –

+0

那麼你怎麼做呢? – clarkk

+1

你不能。這不是原型的目的。你要麼提出錯誤的問題,要麼尋求做一些毫無意義的事情。幾乎在每個系統中,最具體的選項都是優先的,而您正在尋求相反的做法。 –

回答

0

如果您需要更改t屬性的值,請直接從對象的實例訪問該屬性或在構造函數中指定它。

直接訪問

var T = new Test(); 
t.prop = false; 
console.log(T.prop); 

構造

function Test(prop){ 
    this.prop = prop; 
} 

var T = new Test(false); 
+0

我需要在創建對象之前更改屬性 – clarkk

0

構造函數原型複製後執行。您無法使用原型覆蓋由構造函數設置的屬性。

但如果你真的想這樣做,你可以這樣做:

function Test(){ 
    if (this.prop === undefined) { 
     this.prop = false; 
    } 
}