如何在 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 中合并两个函数?