我有一个函数a()
,我想要覆盖它,但也要让原始的a()
按照上下文的顺序执行。例如,有时当我生成一个页面时,我想要覆盖如下所示:
function a() {
new_code();
original_a();
}
有时就像这样:
function a() {
original_a();
other_new_code();
}
如何从重写的a()
中获取该original_a()
?这有可能吗?
请不要以这种方式建议替代重载的方法,我知道有很多方法。我特别想问一下这个问题。
发布于 2009-11-16 14:56:02
谢谢大家,proxy模式真的很helped.....Actually,我想调用一个全局函数foo..在某些页面,我需要做一些检查。因此,我做了以下工作。
//Saving the original func
var org_foo = window.foo;
//Assigning proxy fucnc
window.foo = function(args){
//Performing checks
if(checkCondition(args)){
//Calling original funcs
org_foo(args);
}
};
这真的帮了我大忙
发布于 2010-01-31 13:33:56
您可以使用如下结构覆盖函数:
function override(f, g) {
return function() {
return g(f);
};
}
例如:
a = override(a, function(original_a) {
if (condition) { new_code(); original_a(); }
else { original_a(); other_new_code(); }
});
编辑:修复了一个打字错误。
发布于 2012-02-01 01:24:27
传递任意参数:
a = override(a, function(original_a) {
if (condition) { new_code(); original_a.apply(this, arguments) ; }
else { original_a.apply(this, arguments); other_new_code(); }
});
https://stackoverflow.com/questions/296667
复制相似问题