出于调试目的,我想在 内注入(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/