javascript 将全局命名空间中的特定事件记录到控制台

jk9hmnmh  于 2023-05-16  发布在  Java
关注(0)|答案(2)|浏览(94)

我有一个库,它将函数公开到全局名称空间,以便其他模块调用它们。每当调用其中一个函数时,我都要将其记录到控制台,包括参数。
在Console中:

window.globalLibrary

将返回

{foo: ƒ, bar: ƒ,}

我试图实现的是在任何时候都放置一个事件侦听器

window.globalLibrary.foo(‚testparam‘);

我仔细看了一下

window.addEventlistener();

但似乎这些事件都不符合我的情况
有人能帮忙吗?谢谢你!

uemypmqf

uemypmqf1#

您可以对所有函数进行monkey-patch,以便它们登录到控制台。

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

相关问题