【发布时间】:2022-10-19 22:07:54
【问题描述】:
我正在做一个宠物项目,一个面向学生的小型前端库。它读取 JS 文件中的变量/代码并对其进行测试,输出一些面板。代码本身大致遵循 Jest 框架。
我的问题是我正在尝试创建一个函数来监视其他函数的执行,对它们进行计数,并让我访问计数。
function watchFunction(funcName){
let originalFunction = window[funcName];
let counter = 0;
// Wrap the function, counts when called
window[funcName] = function(...args){
console.log("watching");
counter++;
return originalFunction(...args);
}
return {
getCount: () => {return counter},
reset: () => {
// Unwrap the function
window[funcName] = originalFunction
}
}
}
这似乎适用于Number() 或parseInt() 之类的方法,但我不知道如何访问Math.floor() 之类的方法或Array.prototype.map() 之类的原型方法。
我试过传入函数引用而不是使用window["funcNameString"],但这似乎不起作用。
有没有人有关于包装函数或观看这样的函数的建议或提示?
【问题讨论】:
-
你能分享一下这个函数是如何被调用的,以及它是如何获取它正在监视的函数的吗?
标签: javascript function wrapper