![](/img/trans.png)
[英]How to call javascript function without changing its previous value?
[英]How to function chain in Javascript without storing previous value
我想要一种将我的功能与这个期望的结果链接在一起的方法。 计算器总是从 0 开始,调用 Calculator 会初始化结果 = 0。计算器有几个函数可以对这个值进行操作,并且可以链接在一起。 在链的末尾,我调用 log 来记录结果。
在这个例子中,我调用计算器两次,我想要的结果是 A = 100,B = 4。相反,我得到 A = 100,B = 204。我明白,因为它是相同的 object,结果不会重新初始化为 0我第二次使用它。
const Calculator = {
result: 0,
addNumber(a) {
this.result = this.result + a;
return this;
},
multiplyNumber(a) {
this.result = this.result * a;
return this;
},
log() {
console.log(this.result);
}
};
// A logs 100
Calculator.addNumber(10).multiplyNumber(10).log();
// B logs 204 instead of 4
Calculator.addNumber(2).multiplyNumber(2).log();
无论如何我可以重组它,所以我第二次调用计算器时,它会重新初始化为 0,而不使用 class 并定义新的计算器?
无论如何我可以重组这个所以我第二次打电话给计算器
您永远不会调用Calculator
。 它不是 function。 (如果你把它变成了一个类)。
如果要将其重置为0
,则需要明确执行此操作。
您只需要决定何时执行此操作。
你有两个明显的选择:
log
Calculator
是 object。 每次编写Calculator
时,您似乎都在尝试使用它,就好像它正在创建一个新的 object 一样。
可能你想做这样的事情:
const calculator = () => {
return {
result: 0,
addNumber(a) {
this.result = this.result + a;
return this;
},
multiplyNumber(a) {
this.result = this.result * a;
return this;
},
log() {
console.log(this.result);
}
};
}
// logs 100
calculator().addNumber(10).multiplyNumber(10).log();
// logs 4
calculator().addNumber(2).multiplyNumber(2).log();
或者像这样:
class Calculator
{
constructor() {
this.result = 0;
}
addNumber(a) {
this.result = this.result + a;
return this;
}
multiplyNumber(a) {
this.result = this.result * a;
return this;
}
log() {
console.log(this.result);
}
}
// logs 100
(new Calculator()).addNumber(10).multiplyNumber(10).log();
// logs 4
(new Calculator()).addNumber(2).multiplyNumber(2).log();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.