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

Posted

技术标签:

【中文标题】如何在 JavaScript / jQuery 中合并两个函数?【英文标题】:How to merge two functions in 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/

【问题讨论】:

这个函数只连接对象,而不是函数。 ***.com/questions/15251030/… 【参考方案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();

【讨论】:

以上是关于如何在 JavaScript / jQuery 中合并两个函数?的主要内容,如果未能解决你的问题,请参考以下文章

Android - Javascript:如何在 webview 中执行 jquery

JavaScript / jQuery:如何在 Firefox 中获取选定的文本

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

如何在 jQuery 中编写手风琴式 JavaScript

如何在 JavaScript/jQuery 中查找数组是不是包含特定字符串?

如何在 Javascript/jQuery 中重置超时?