如何在JavaScript / jQuery中合并两个函数?

时间:2014-04-03 17:58:08

标签: javascript jquery

我有以下内容:

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

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

$.extend(firstFunc, secondFunc);

firstFunc();

我正试图让最后一个FirstFunc()返回sup,然后是dude。

上下文

原因是我实现了一个继承模式,如果由派生对象定义,基础对象会覆盖一些功能:

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

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

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

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

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

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

// 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/