如何在JavaScript中添加/添加所有函数调用的结果

时间:2018-09-04 12:56:26

标签: javascript function append prepend

让我说我有一个功能

function sum(...args) { return args.reduce((acc, v) => acc + v, 0) }

我正在这样使用它->

console.log( “hi ” + sum(2,3) + “ hello” ),这将给我输出hi 5 hello

我想取得结果 hi start 5 end hello

基本上,我想给函数调用的每个输出添加和固定一些固定值,而与函数本身无关。

我尝试覆盖valueOf属性,但是它不起作用

注意:sum只是一个示例函数。有什么解决方案可以使其与所有功能一起使用吗?

2 个答案:

答案 0 :(得分:0)

您可以创建一个原型,并使用它来调用函数,并在其中包含所需的任何内容:

Function.prototype.debug = function(...args){
    let res = this.apply(this, args);
    console.log("Called function '" + this.name + "'. Result: start " + res + " end");
    return res;
}

function sum(...args) {
   return args.reduce((acc, v) => acc + v, 0)
}

console.log( "hi " +  sum.debug(2,3) + " hello");

答案 1 :(得分:0)

如果仅出于登录目的需要它:

function sum(a, b) {
  return a + b;
}

function divide(a, b) {
  return a/b;
}

const oldLog = console.log;
console.log = function(msg) {
  oldLog(`start ${msg} end`);
}

console.log(sum(1,2));
console.log(divide(1,2));