我想在我的对象上覆盖jQuery的hide()
函数。我希望它调用我的onHide()
函数,然后调用原始hide()
。
如何做到这一点?
最简单的代码不会传递参数我想:
myobject.oldhide = myobject.hide;
myobject.onHide = function() {
// something
};
myobject.hide = function() {
this.onHide();
this.oldhide();
}
jQuery的hide()
最多接受3个参数。我可以定义其中的3个吗?
myobject.oldhide = myobject.hide;
myobject.onHide = function() {
// something
};
myobject.hide = function(a,b,c) {
this.onHide();
this.oldhide(a,b,c);
}
答案 0 :(得分:5)
您可以使用.apply()
来调用原始文件:
this.oldhide.apply(this, arguments);
将调用oldhide
,并将任何参数列表传递给您自己的函数,该函数列表不需要任何声明的参数:
myobject.oldhide = myobject.hide;
myobject.onHide = function() {
// something
};
myobject.hide = function() {
this.onHide();
this.oldhide.apply(this, arguments);
}
答案 1 :(得分:2)
是的,未传入的内容只有undefined
。
答案 2 :(得分:0)
您可以使用$.proxy缓存旧版隐藏。
myobject.oldhide = $.proxy(myobject.hide, myobject);
myobject.onHide = function() {
// something
};
//a, b, and c parameters don't have to be passed
//but if they are they will be forwarded to the old hide.
//Using $.proxy will preserve the way the old function takes parameters.
myobject.hide = function(a, b, c) {
this.onHide();
this.oldhide(a, b, c);
};