javascript 重写已有的方法

现在有一个需求,需要重写方法,比如方法名为a,但是在方法内部,需要用到原来的方法,怎么办?

最直接的办法是:

var b = a;

window.a = function(args){
     
      a.call(window, args);
   }
};

当然,这个不是很完美,因为定义了一个全局变量b,

更完美的解决办法是

var a = (function() {
    var original_a = a;

    if (condition) {
        return function() {
            new_code();
            original_a();
        }
    }
    else {
        return function() {
            original_a();
            other_new_code();
        }
    }
})();

使用了一个自执行匿名函数,很完美的解决了这个问题。

原文地址:https://www.cnblogs.com/strayling/p/4146613.html