小编典典

自动将console.log添加到每个功能

javascript

通过在某个地方注册全局钩子(即,无需修改实际函数本身)或通过其他方式,是否有任何方法可以使任何函数输出console.log语句?


阅读 299

收藏
2020-05-01

共1个答案

小编典典

这是用您选择的函数扩展全局名称空间中所有函数的方法:

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都不会具有其他行为。

2020-05-01