一尘不染

在引用原始函数时覆盖JavaScript函数

javascript

我有一个a()要覆盖的函数,但也有一个a()要根据上下文按顺序执行的功能。例如,有时在生成页面时,我会想要像这样覆盖:

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

有时像这样:

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

我如何original_a()从最重要的方面得到它a()?可能吗

我知道很多人都建议不要以这种方式替代替代。我在问这种方式。


阅读 317

收藏
2020-05-01

共1个答案

一尘不染

您可以执行以下操作:

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

2020-05-01