我有一个物体内部3种互联的方法:JavaScript事件处理函数范围控制研究
dragStartHandler: function(e) {
console.log(e.type, 'dragstart', e.pageX, e.pageY);
document.addEventListener('mousemove', this.dragMoveHandler, false);
document.addEventListener('mouseup', this.dragEndHandler.bind(this), false);
},
dragMoveHandler: function(e) {
console.log(e.type, 'dragmove', e.pageX, e.pageY);
this.updateRotation();
},
dragEndHandler: function(e) {
console.log(e.type, 'dragend', e.pageX, e.pageY);
document.removeEventListener('mousemove', this.dragMoveHandler, false);
},
他们处理基于鼠标指针的位置旋转。我不知道该怎么做才能访问内部的dragMoveHandler并且能够同时删除元素监听器。 我试过使用.bind(这个),但它返回了我无法删除的匿名函数dragEndHandler。
有没有我不知道的技术?
创建事件跟踪器,并添加引用跟踪器绑定的功能。 – Teemu 2015-01-15 16:18:41
你能否再详述一下? – 2015-01-15 19:10:44
创建一个具有附加事件方法的对象。调用这个方法而不是直接的'addEventListener'。然后在该方法中,您可以将元素,事件等推送到跟踪器,并且还可以使用“绑定”方式来稍后移除事件。 [这是一个例子](http://jsfiddle.net/pnb46b4m/)如何创建这样一个对象。 (在小提琴中只有一个属性定义,代码不能正常工作,它需要更多的上下文。) – Teemu 2015-01-15 19:24:56