这实际上取决于许多因素。以下是一些注意事项:
要考虑的另一种替代方法是让您的对象实现事件侦听器接口。这将允许您将对象本身作为处理程序传递,并将调用您handleEvent()提供的方法的实现。
然后该this值将自动成为您的对象。
所以如果你this是一个来自构造函数的对象,你可以这样做:
function MyCtor() {
// your constructor
}
// This implements the `Event Listener` interface
MyCtor.prototype.handleEvent = function(event) {
// ------v----should be "load"
return this[event.type](event)
};
// This is the `load` handler
MyCtor.prototype.load = function(event) {
this.emit({
type: "load",
asset: event.currentTarget
});
};
然后像这样绑定处理程序:
asset.addEventListener("load", this, false);
现在您this在句柄事件中的值将是您的对象,因此您可以调用它的其他方法,既不.bind需要也不需要闭包变量。