gpt4 book ai didi

javascript - 如何在每个原型(prototype)方法的开头注入(inject) javascript 代码?

转载 作者:行者123 更新时间:2023-12-04 17:22:47 26 4
gpt4 key购买 nike

出于调试目的,我想在 内注入(inject) javascript 代码每一个我在 javascript 中的方法原型(prototype)。此示例仅显示一个类,但 假设我有数百个类,每个类有几十个方法 .这种机制应该在原型(prototype)级别执行,而不需要指定每个类/方法名称。

function MyClass1() {
this.attrib = "ABC";
}

MyClass1.prototype.myMethod = function() {
alert("first row"); // <---- THE INJECTION SHOULD OCCUR BEFORE THIS LINE OF CODE
}

这个想法是 动态在第一次加载/执行 javascript 代码期间,在 myMethod() 的第一行之前注入(inject)一些代码。如:
MyClass1.prototype.myMethod = function() {
alert("I was injected dynamically");
alert("first row");
}

因此,对于其他所有类和方法,也应该发生同样的情况。这可以使用 Function.prototype 方法实现吗?

最佳答案

只需包装您的方法。这是标准方法:

MyClass1.prototype.myMethod = function() {
alert("first row");
}

然后包装它:
var orig = MyClass1.prototype.myMethod;
MyClass1.prototype.myMethod = function() {
alert('Injected');
return orig.apply(this, arguments);
}

您在问两个问题,而我只回答了其中一个(即如何包装函数)。另一部分 - 如何在许多功能上执行此操作 - 最好使用专门的库来完成。事实上,这可以使用 Aspect Oriented Programming (AOP) 来完成。 .我找到了几个提供此功能的 JavaScript 库,其中一个是 Aop.js (尝试自己搜索更多内容)。

关于javascript - 如何在每个原型(prototype)方法的开头注入(inject) javascript 代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17502932/

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