链式调用
下面是两种最基本的链式调用的实现方法,一种是基于原型方法,一种利用闭包实现。
这两种方法各有各的优势,前者会将方法绑定分成 2 个部分,导致写法不紧密,相对来说不方便函数的迁移,但是在大多数情况下是不会出现什么问题的。
后者要注意,每次调用的时候都返回了一个函数调用后的实例,这会导致这个函数返回的对象无限的嵌套下去,直到调用 end 将结果释放出来。
基本链式调用
基本链式调用
function Chain(init) {
this._value = +init || 0;
return this;
}
Chain.prototype = {
add(addNum) {
this._value += +addNum || 0;
return this;
},
end() {
return this._value;
},
};
console.log(new Chain().add(1).add(3).end());
// 4
闭包链式调用
基本闭包链式调用
function functionChain(init) {
const value = +init || 0;
return {
value,
add(num) {
return functionChain(value + num);
},
end() {
return value;
},
};
}
console.log(functionChain().add(1).add(3).end());
// 4