gpt4 book ai didi

javascript - 我可以覆盖 Javascript 函数对象来记录所有函数调用吗?

转载 作者:IT王子 更新时间:2023-10-29 03:00:32 24 4
gpt4 key购买 nike

我能否覆盖 Function 对象的行为,以便我可以在每次函数调用之前注入(inject)行为,然后照常进行?具体来说,(尽管总体思路本身很有趣)我可以将每个函数调用都记录到控制台,而不必在各处插入 console.log 语句吗?然后继续正常行为?

我确实认识到这可能会带来严重的性能问题;即使在我的开发环境中,我也无意让这个程序正常运行。但是,如果它有效,那么获得运行代码的 1000 米 View 似乎是一个优雅的解决方案。而且我怀疑答案会让我更深入地了解 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,它...

重点是,我不确定这是否可能。

关于javascript - 我可以覆盖 Javascript 函数对象来记录所有函数调用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5226550/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com