如何在不修改nameOfFunction()前提下,使其输出为自身返回值与变量之和?
解决方案:函数包装(劫持)实现结果累加
既然你不能修改nameOfFunction()的内部代码,也不能替换它的调用方式,那我们可以通过包装原函数的方式来实现需求,完全符合你的约束条件。
具体代码实现
// 先保存原函数的引用,防止覆盖后无法调用原逻辑 const originalCartTotal = nameOfFunction; // 重新定义函数,让它返回原结果加上指定的number值 nameOfFunction = function() { // 调用原函数拿到购物车原本的总费用 const originalTotal = originalCartTotal(); // 加上预设的number(这里是5)后返回 return originalTotal + number; }; // 现在调用就会得到累加后的结果 console.log(nameOfFunction()); // 输出15
为什么这能行?
这个方法的核心是函数劫持:我们并没有修改原nameOfFunction()的内部代码,只是把这个函数变量重新指向了一个新的函数。新函数内部会先调用原函数获取它原本的返回值(也就是购物车的原始总费用),再把它和你的number变量相加后返回。
这样一来,其他地方调用nameOfFunction()的方式完全不需要改变,但返回的结果已经是你想要的累加后的值了——完美匹配你“10 + 5 = 15”的需求。
注意事项
- 要确保你能访问到
nameOfFunction这个变量(比如它是全局变量,或者在当前作用域内可访问); - 如果运行环境是严格模式,部分全局函数可能不允许被重写,但电商网站的购物车总费用函数一般不会有这种限制。
内容的提问来源于stack exchange,提问作者JPB
相关产品推荐
相关产品推荐

