我有一个图书馆,正在将函数暴露给全局命名空间,以供其他模块调用它们。
每当调用此功能之一时,我都希望将其记录到包含参数的控制台中。

因此,在控制台中:

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);

10-04 19:24