我试图创建可重用的链接功能,但遇到问题。普通方法c.plus(5).plus(2).execute()
可以正常工作,但是我不知道如何使这种可重用性如下所示。你有什么想法吗?
function chain() {
this.i = 0;
this.plus = (x) => {
this.i = this.i + x;
return this;
};
this.execute = () => console.log(this.i);
}
const c = new chain();
const c1 = c.plus(5);
c1.plus(2).execute(); // 7
c1.execute();// 7 instead of 5
最佳答案
当前功能的问题在于,当您调用plus()
时,您正在原始对象i
中修改c
。
而是,每次调用chain
时都返回一个新的plus(arg)
对象,并将arg
添加到i
的当前值。
顺便说一句,在JavaScript中习惯上使用TitleCase
来命名构造函数。通常chain
为Chain
。仅供参考。
function Chain() {
this.i = 0;
this.plus = (x) => {
let c = new Chain();
c.i = this.i + x;
return c;
};
this.execute = () => console.log(this.i);
}
const c = new Chain();
const c1 = c.plus(5);
c1.plus(2).execute(); // 7
c1.execute();// 7 instead of 5
c.plus(2).plus(10).execute(); // 12
关于javascript - 创建可重复使用的链函数javascript,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49208338/