如何将变量传递给事件中的构造函数方法?

时间:2015-12-15 02:30:03

标签: javascript events constructor prototype

在一个原型方法中,我有这个代码:

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函数。

1 个答案:

答案 0 :(得分:1)

event在某些实现中是遗留原因的全局变量(由IE开始的不良做法)。它实际上应该是事件处理程序的参数:

DragDrop.prototype.drag = function(event) {
//                                 ^^^^^
    console.log(event);
}

请注意,这与bind函数无关,您的事件处理程序也不会解除绑定。