0
所以基本上,this.acceleration不會更新,無論我做什麼。我需要一種方法來讓一個函數更新它的值,所以當它們從另一個函數改變時,它仍然可以正常工作。這裏是我的意思是:函數表達式不更新值,只能調用一次函數表達式(模塊)
function PropellingNozzle(power) {
this.power = power;
this.afterburner = "off";
function acceleration (afterburner, power) {
this.afterburner = afterburner;
console.log(this.power);
if(this.afterburner == "on") {
this.acceleration = this.power*2;
}
else if(this.afterburner == "off") {
this.acceleration = this.power;
}
console.log("called");
return this.acceleration
}
return {
power: this.power,
afterburner: this.afterburner,
switchAfterburner: function() {
if(this.afterburner == "off") {
this.afterburner = "on";
}
else if(this.afterburner == "on") {
this.afterburner = "off";
}
},
acceleration: acceleration(this.afterburner, this.power)
};
}
正如你所看到的,我知道開始分析的價值和什麼沒有,只是試驗階段,因此仍然無法正常工作。 Here是jsfiddle中測試的整個代碼部分。優先考慮的是,switchAfterburner也應該在PropellingNozzle函數中,但是如果它不起作用,它就不會有任何問題留在返回中。我的任務是儘可能以我的知識編寫面向對象的代碼
你的小提琴的這部分沒有意義'var nozzle = new propulsionUnits.PropellingNozzle(20);'。 'propulsionUnits'是指一個對象,而不是一個構造函數。 – linstantnoodles
propulsionUnits是我所謂的模塊。 propulsionUnits.PropellinNozzle應該引用PropellingNozzle函數,它確實是一個構造函數。這部分已經過測試並且工作正常,如果你可以幫我解決我的問題,我將對它進行補充 – user3127242
如果你想用函數作爲'new'的構造函數,你不應該返回一個對象(不是問題的根源,但令人困惑)。 – Bergi