Как я могу добавить / добавить результаты всех вызовов функций в JavaScript - PullRequest
0 голосов
/ 04 сентября 2018

Допустим, у меня есть функция

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 голосов
/ 04 сентября 2018

Если вам это нужно только для входа в систему:

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));
0 голосов
/ 04 сентября 2018

Вы можете создать прототип и использовать его для вызова своих функций и включать в него все, что вы хотите:

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