3 回答

TA贡献1824条经验 获得超8个赞
你可以这样做:
var a = (function() {
var original_a = a;
if (condition) {
return function() {
new_code();
original_a();
}
} else {
return function() {
original_a();
other_new_code();
}
}
})();
original_a在匿名函数内部声明可以防止它混乱全局命名空间,但它可以在内部函数中使用。
像评论中提到的Nerdmaster一样,请务必()在最后添加。您想调用外部函数并将结果(两个内部函数之一)a存储在其中,而不是存储外部函数本身a。

TA贡献1799条经验 获得超6个赞
该代理模式可以帮助你:
(function() {
// log all calls to setArray
var proxied = jQuery.fn.setArray;
jQuery.fn.setArray = function() {
console.log( this, arguments );
return proxied.apply( this, arguments );
};
})();
上面将其代码包装在一个隐藏“代理”变量的函数中。它将jQuery的setArray方法保存在一个闭包中并覆盖它。然后,代理会记录对方法的所有调用,并将调用委托给原始调用。使用apply(this,arguments)可以保证调用者无法注意到原始方法和代理方法之间的区别。
添加回答
举报