在Javascript中,如何使函数在执行其中的任何内容之前调用特定的函数

In Javascript, how do I make a function calls a specific function before executing anything within it?

本文关键字:函数 调用 Javascript 何使 执行 任何内      更新时间:2023-09-26

在Javascript中,我如何使函数在执行其中的任何内容之前调用特定的函数(类似于super) ?函数)?

function test() {
  // would like this to call a custom function
}
function test2() {
 // would like this to call the same custom function
}

这样做的想法是,所以我可以实现的事情,如注销什么函数被调用,而不必注入日志语句到每个函数的开始。

Javascript没有这种可以自动完成的功能。你必须将testtest2替换为其他调用你的日志的东西,然后调用原始的。

例如,这里有一个通用函数,它可以钩住任何其他函数并首先调用日志:

function test() {
  // your function that does whatever
}
// function hooker
function logFunction(fn, logFn, arg) {
    return function() {
        logFn(arg);
        return fn.apply(this, arguments);
    }
}
// custom function to be called by the hook function before executing original function
function myLogger(msg) {
    console.log(msg);
}
// then to hook something
test = logFunction(test, myLogger, "test");