1. ホーム
  2. javascript

[解決済み] すべての関数にconsole.logを自動的に追加する

2022-11-28 08:05:42

質問

グローバルフックをどこかに登録する(つまり、実際の関数自体を変更しない)か、その他の方法で、任意の関数が呼び出されたときに console.log 文を出力するようにする方法はありますか?

どのように解決するのですか?

グローバル名前空間内のすべての関数を、好みの関数で補強する方法を紹介します。

function augment(withFn) {
    var name, fn;
    for (name in window) {
        fn = window[name];
        if (typeof fn === 'function') {
            window[name] = (function(name, fn) {
                var args = arguments;
                return function() {
                    withFn.apply(this, args);
                    return fn.apply(this, arguments);

                }
            })(name, fn);
        }
    }
}

augment(function(name, fn) {
    console.log("calling " + name);
});

デメリットとしては augment を呼び出した後に作成された関数は、追加の動作を持たないということです。