首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >重写JavaScript函数,同时引用原始

重写JavaScript函数,同时引用原始
EN

Stack Overflow用户
提问于 2008-11-17 19:53:13
回答 9查看 206.5K关注 0票数 164

我有一个函数a(),我想要覆盖它,但也要让原始的a()按照上下文的顺序执行。例如,有时当我生成一个页面时,我想要覆盖如下所示:

function a() {
    new_code();
    original_a();
}

有时就像这样:

function a() {
    original_a();
    other_new_code();
}

如何从重写的a()中获取该original_a()?这有可能吗?

请不要以这种方式建议替代重载的方法,我知道有很多方法。我特别想问一下这个问题。

EN

回答 9

Stack Overflow用户

发布于 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);
    }
};

这真的帮了我大忙

票数 28
EN

Stack Overflow用户

发布于 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(); }
 });

编辑:修复了一个打字错误。

票数 11
EN

Stack Overflow用户

发布于 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(); }
});
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/296667

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档