我有一个图书馆,正在将函数暴露给全局命名空间,以供其他模块调用它们。
每当调用此功能之一时,我都希望将其记录到包含参数的控制台中。
因此,在控制台中:
window.globalLibrary
将返回
{foo: ƒ, bar: ƒ,}
我想要达到的目的是在任何时候放置事件监听器
window.globalLibrary.foo(‚testparam‘);
叫做
我仔细看了一下
window.addEventlistener();
但似乎这些事件都不适合我的情况。
有人可以帮忙吗?谢谢!
最佳答案
您可以猴子修补所有功能,以便它们登录到控制台。
window.globalLibrary = {
func1: function() {
console.log("Real func1");
return "func1";
},
obj: "This isn't a function",
func2: function(a, b) {
console.log("Real func2");
return a * a + b;
}
};
Object.keys(window.globalLibrary).forEach(function(prop) {
if (typeof window.globalLibrary[prop] == "function") {
var func = window.globalLibrary[prop];
window.globalLibrary[prop] = function() {
console.log("Calling: " + prop + "(" + Array.from(arguments) + ")");
return func.apply(this, arguments);
};
}
});
console.log(globalLibrary.func1());
console.log(globalLibrary.func2(10, 35));
console.log(globalLibrary.obj);