如何用Javascript中的原型覆蓋屬性?如何用原型覆蓋屬性
代碼
function Test(){
this.prop = false;
}
Test.prototype.prop = true;
var T = new Test();
console.log(T.prop);
這將返回false
但應該返回true
?
如何用Javascript中的原型覆蓋屬性?如何用原型覆蓋屬性
function Test(){
this.prop = false;
}
Test.prototype.prop = true;
var T = new Test();
console.log(T.prop);
這將返回false
但應該返回true
?
如果您需要更改t屬性的值,請直接從對象的實例訪問該屬性或在構造函數中指定它。
直接訪問
var T = new Test();
t.prop = false;
console.log(T.prop);
構造
function Test(prop){
this.prop = prop;
}
var T = new Test(false);
我需要在創建對象之前更改屬性 – clarkk
構造函數原型複製後執行。您無法使用原型覆蓋由構造函數設置的屬性。
但如果你真的想這樣做,你可以這樣做:
function Test(){
if (this.prop === undefined) {
this.prop = false;
}
}
不,它不應該。請閱讀[this](https://developer.mozilla.org/en-US/docs/JavaScript/Guide/Inheritance_and_the_prototype_chain)。 –
那麼你怎麼做呢? – clarkk
你不能。這不是原型的目的。你要麼提出錯誤的問題,要麼尋求做一些毫無意義的事情。幾乎在每個系統中,最具體的選項都是優先的,而您正在尋求相反的做法。 –