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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在JavaScript中预先添加/附加所有函数调用的结果相关的知识,希望对你有一定的参考价值。

让我们说我有一个功能

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的结果

基本上,我想在函数调用的每个输出中追加和前置一些固定值,而不管函数本身如何。

我试过覆盖属性的值,但它不起作用

注意:sum只是一个示例函数。是否有可能的解决方案,以便它适用于所有功能?

答案

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

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");
另一答案

如果您只需要它用于记录目的:

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));

以上是关于如何在JavaScript中预先添加/附加所有函数调用的结果的主要内容,如果未能解决你的问题,请参考以下文章

反转附加列表或预先添加列表更便宜吗? - Python

删除之前附加的文本

C 程序预先添加,啥时候应该添加

MATLAB:附加到预先分配的矩阵

使用 ajax 和 jquery 从数据库中动态添加预先填充的表单

递归打印字符串的所有排列(Javascript)