有没有一种方法可以实现可以拦截箭头功能的记录器功能,例如下面的示例?一世

原始代码:

const arrowFunctionExample = (value)=> {
    console.log('arrowFunctionExample',value)
}

function main(){
    arrowFunctionExample('testing')
}


新代码:

const arrowFunctionExample = (value) => {
  console.log('arrowFunctionExample', value)
}

function main() {
  logger(arrowFunctionExample('testing'))
}

//something like this
const logger = (fn) => {
  console.log('logger', fn)
  if (typeof fn === 'function') {
    fn(value)
  }
}


在两种情况下,我都希望在执行主命令时获得相同的效果,而不必编辑箭头功能。

最佳答案

那是你要的吗 ?



function logger(fn){
    return function(){
        console.log("log:", fn.name, arguments);
        return fn.apply(this, arguments);
    }
}

const arrowFunctionExample = (value)=> {
    console.log("do something with", value);
};

function main(){
    logger(arrowFunctionExample)('testing')
}

main();

07-26 01:06