2015-12-15 117 views
0

在一个原型方法我有这样的代码:如何将变量传递给事件中的构造函数方法?

DragDrop.prototype.startDrag = function() { 
// ... other code 
    this.mouseMove = this.drag.bind(this); 
    ... 

的.bind只是所以我可以指从我请(this.drag)的功能的对象。

(事件不能是匿名函数,因为我需要后来不然我会永远被拖动删除...)

... 
window.addEventListener('mousemove', this.mouseMove, false); 
} 

然后这是我使用上述功能。这在Safari和Chrome中都可以正常工作,但在Firefox中未定义。

这是如何解决的?

作为一个方面说明,我是新来的构造函数,并希望知道是否有另一种方法来做到这一点/没有绑定。在理想的世界中,我想将更多的变量传递给.drag函数。

+0

你是什么意思“*我想将更多的变量传递给.drag函数。*”你不应该只使用实例属性吗? – Bergi

+0

为所有事情使用实例属性是否更好?我只是想能够返回函数中的值来减少这些:http://imgur.com/8ShLB4S。 是否可以将参数传递给绑定(绑定?!)函数? –

+0

对编码实例状态的所有内容使用实例属性。没有很多变数,但我不确定你所指的是什么。你可以更具体一点*你想传递什么*变量?不,事件处理程序不能有返回值。 – Bergi

回答

1

event是一些全局变量,在某些实现中由于遗留原因(由IE启动的不好的练习)。它实际上应该是事件处理程序的参数,但:

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

注意,这已经无关bind荷兰国际集团的功能,事件处理程序也不会要么工作绑定。

+0

非常好,谢谢! –

相关问题