如何在javascript中覆盖可变数量参数的函数?

Dim*_*ims 1 javascript jquery overriding overloading

我想hide()在我的对象上覆盖jQuery的函数.我想让它调用我的onHide()函数然后调用原始函数hide().

怎么做到这一点?

最简单的代码不会传递参数我猜:

myobject.oldhide = myobject.hide;
myobject.onHide = function() {
   // something
};
myobject.hide = function() {
   this.onHide();
   this.oldhide();
}
Run Code Online (Sandbox Code Playgroud)

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);
}
Run Code Online (Sandbox Code Playgroud)

Aln*_*tak 5

你可以.apply()用来打电话给原件:

this.oldhide.apply(this, arguments);
Run Code Online (Sandbox Code Playgroud)

将调用oldhide任何参数列表传递给您自己的函数,它不需要任何声明的参数:

myobject.oldhide = myobject.hide;

myobject.onHide = function() {
   // something
};

myobject.hide = function() {
   this.onHide();
   this.oldhide.apply(this, arguments);
}
Run Code Online (Sandbox Code Playgroud)