我想在 javascript 中注入代码,用于调试目的,在每个人我的 JavaScript 方法原型。这个例子只显示了一个类,但是假设我有数百个类,每个类有几十个方法。该机制应该在原型级别执行,而不需要指定每个类/方法名称。
function MyClass1() {
this.attrib = "ABC";
}
MyClass1.prototype.myMethod = function() {
alert("first row"); // <---- THE INJECTION SHOULD OCCUR BEFORE THIS LINE OF CODE
}
这个想法是动态地在第一次加载/执行 javascript 代码期间,在 myMethod() 第一行之前注入一些代码。例如:
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);
}
您问了两个问题,而我只回答了其中一个问题(即如何包装函数)。另一部分 - 如何在许多函数上执行此操作 - 最好使用专门的库来完成。事实上,这可以通过使用来完成面向方面编程(AOP) http://en.wikipedia.org/wiki/Aspect-oriented_programming。我发现了几个提供此功能的 JavaScript 库,其中之一是Aop.js http://mulli.nu/2010/05/07/aop-js.html(尝试自行谷歌搜索更多信息)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)