我正在构建一些会触发自定义事件的对象,而我正在使用jQuery的bind和触发器来管理这个,就像这样:
function MyObject() {
var _this = this;
this.onUpdate = function(fn) {
$(_this).bind('MyObject.update', fn);
};
this.update = function(params) {
//Do stuff...
$(_this).trigger('MyObject.update', [updatedID]);
};
}
我的问题是当我用onUpdate注册其他回调函数时 - 我传入的函数需要包含'event'参数,以使触发器正常工作,如下所示:
function myCallback(event, updatedID) {
//Do more stuff...
}
var myobject = new MyObject();
myobject.onUpdate(myCallback);
有没有一种很好的方法可以将我传入的函数包装在onUpdate方法中,以便myCallback不需要'event'参数,因为它似乎与我的目的有点无关?
答案 0 :(得分:1)
您可以使用apply
[MDN]:
this.onUpdate = function(fn) {
$(_this).bind('MyObject.update', function() {
var params = [].slice.call(arguments, 1); // remove first argument
fn.apply(this, params);
});
};
OT:您应该扩展函数原型,而不是将函数添加到每个实例:
MyObject.prototype.onUpdate = function(fn) {...};
MyObject.prototype.update = function(params) {...};
这样,所有实例都共享这些功能。
在这方面值得阅读的文章: