JavaScript 中如何实现链式调用的函数?
Sint(1,2).j(10) // 13
这样的函数怎么实现。
function Sint(a,b){
this.val= a + b
}
Sint.prototype.j= function(e){
return this.val + e
}
这样操作需要 new Sint(1,2) ,有什么办法可以实现直接 Sint(1,2).j(10) 输出结果吗?
回复
1个回答
test
2024-06-19
补充一个思路,直接打印没法做到直接输出值,但是可以利用参与计算时,底层会调用 Symbol.toPrimitive
所绑定的方法,是可以做到直接跟运算符号的
function Sum(...args) {
this.value = args.reduce((a, b) => a + b, 0);
return new Proxy(this, {
get: function (target, prop) {
if (prop === Symbol.toPrimitive) {
return () => target.value;
}
return target[prop];
}
});
}
Sum.prototype.add = function (value) {
this.value += value;
return this;
}
使用示例
// 访问值
new Sum(1,2,3).add(4).add(5).value // 15
// 参与计算
new Sum(1,2,3).add(4).add(5) + 20 // 35
回复
适合作为回答的
- 经过验证的有效解决办法
- 自己的经验指引,对解决问题有帮助
- 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
- 询问内容细节或回复楼层
- 与题目无关的内容
- “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容