我有几种方法需要以基本相同的方式包装在新方法中。我的第一个解决方案不起作用,我明白为什么,但我不知道是否有一个简单的解决方案可以解决这个问题,或者是否不能按照我想要的方式完成。
这是一个例子。我有具有 onClick 方法的对象 ac。我需要在 onClick 方法之前执行一些代码。我尝试了以下方法:
// objects a-c
a = {onClick : function () { console.log('a'); }};
b = {onClick : function () { console.log('b'); }};
c = {onClick : function () { console.log('c'); }};
// first try
var arr = [a, b, c]
for (var i = 0; i < arr.length; i++) {
var oldOnClick = arr[i].onClick;
arr[i].onClick = function () {
// new code here
oldOnClick();
}
}
// outputs 'c'
// what i want is to maintain a reference to the original method
// so in this case, execute my new code and output 'a'
a.onClick();
这不起作用,因为当调用新方法时,oldOnClick 将指向上一次迭代中的方法,而不是分配时的 to 方法。
有没有我忽略的简单解决方案?