【问题标题】:How to merge two functions in JavaScript / jQuery?如何在 JavaScript / jQuery 中合并两个函数?
【发布时间】:2014-04-03 17:58:07
【问题描述】:

我有以下:

var firstFunc = function (settings){
    alert('sup');
};

var secondFunc = function (settings){
    alert('dude');
};

$.extend(firstFunc, secondFunc);

firstFunc();

我试图让最后一个 firstFunc() 返回 sup,然后老兄。

上下文

这样做的原因是我实现了一个继承模式,其中基对象的某些功能被派生对象定义:

   if (child.close){
      base.close = child.close;    
    }

   base.close = function() {
      // do stuff    
    }

问题是,我总是需要基础对象来“做事”,我想将 child.close 的功能附加到 base.close。我怎样才能做到这一点?

小提琴:http://jsfiddle.net/jEjxZ/1/

【问题讨论】:

标签: javascript jquery


【解决方案1】:

如果不知道确切的继承实现很难回答,但这样的事情可能会对您有所帮助:

// reference to child instance
var self = this;

// overwrite close method
this.close = (function() { 
    var baseClose = self.close;
    return function() {
        baseClose.call(self);
        alert('child close');
    };
})();

后来:

base.close();   // alert('base close');
child.close();  // alert('base close'); -> alert('child close');

创建包装方法的想法。

演示:http://jsfiddle.net/jEjxZ/3/

【讨论】:

    【解决方案2】:

    $.extend 用于对象,而不是函数。为什么不创建一个调用前两个函数的第三个函数?

    function bothFuncs(){
        firstFunc();
        secondFunc();
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-09-11
      • 1970-01-01
      • 2019-09-26
      • 2018-09-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多