我可以重写 Function 对象的行为,以便可以在每次函数调用之前注入行为,然后正常进行吗?具体来说,(尽管总体想法本身很有趣)我可以将每个函数调用记录到控制台,而不必到处插入 console.log 语句吗?然后正常的行为还会继续吗?
我确实认识到这可能会带来严重的性能问题;即使在我的开发环境中,我也不打算通常运行此操作。但如果它有效的话,这似乎是一个优雅的解决方案,可以获取正在运行的代码的 1000 米视图。我怀疑这个答案会让我更深入地了解 javascript。
显而易见的答案如下:
var origCall = Function.prototype.call;
Function.prototype.call = function (thisArg) {
console.log("calling a function");
var args = Array.prototype.slice.call(arguments, 1);
origCall.apply(thisArg, args);
};
但这实际上立即进入无限循环,因为调用的行为console.log
执行一个函数调用,该函数调用console.log
,它执行一个函数调用,它调用console.log
, 哪个...
重点是,我不确定这是否可能。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)