所以基本上这个。加速不会随时更新。我需要一种方法来使函数更新其值,所以当它们从另一个函数更改时,它仍然可以正常工作。这就是我的意思:
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函数中,但是如果它不能工作则保持返回是没有问题的。我的任务是尽可能用我的知识编写面向对象的代码
答案 0 :(得分:0)
只调用一次 - 将值分配给acceleration
属性。您没有指定函数表达式,只要其中一个值发生更改,就会重新计算,但是您要分配其结果值。
那该怎么做呢?你可以
acceleration
属性。当它们仅由您的函数设置(如switchAfterBurner
)而不是从外部直接分配时,很容易将重新计算放在那些设置器中。getAcceleration()
函数来动态计算正确的值,而不仅仅是读取属性。顺便说一下,请使用
function PropellingNozzle(power) {
this.power = power;
this.afterburner = "off";
this.switchAfterburner = function() {…};
…
}
var example = new PropellingNozzle(…);
或
function makePropellingNozzle(power) {
…
return {
power: power,
afterburner: "off",
switchAfterburner: function() {…},
…
};
}
var example = makePropellingNozzle(…);
但不是两者的混合。