在一个原型方法中,我有这个代码:
DragDrop.prototype.startDrag = function() {
// ... other code
this.mouseMove = this.drag.bind(this);
...
.bind就是这样我可以从我调用的函数( this.drag )中引用该对象。
(该事件不能成为匿名函数,因为我需要在以后将其删除,否则我将永远拖延...)
...
window.addEventListener('mousemove', this.mouseMove, false);
}
然后这是我正在使用的上述功能。这在Safari和Chrome中都运行良好,但在Firefox事件中未定义。
DragDrop.prototype.drag = function() {
console.log(event);
}
这是如何解决的?
作为旁注,我是构造函数的新手,并希望知道是否有另一种方法可以做到这一点/没有绑定。在理想的世界中,我也希望将更多变量传递给.drag函数。
答案 0 :(得分:1)
event
在某些实现中是遗留原因的全局变量(由IE开始的不良做法)。它实际上应该是事件处理程序的参数:
DragDrop.prototype.drag = function(event) {
// ^^^^^
console.log(event);
}
请注意,这与bind
函数无关,您的事件处理程序也不会解除绑定。