Can';t删除eventlisteners类型脚本/OOP JavaScript
onMouseUp已启动,但它不会删除Can';t删除eventlisteners类型脚本/OOP JavaScript,javascript,oop,drag-and-drop,typescript,Javascript,Oop,Drag And Drop,Typescript,onMouseUp已启动,但它不会删除EventListeners。我读过很多帖子,人们遇到了问题,这是因为他们没有删除他们添加的相同功能,阅读时我想我可能也有同样的问题,但我该如何处理呢?我不完全理解这个问题的答案 class DragAndDrop { item: Item; documentBody: HTMLBodyElement; constructor(documentBody: HTMLBodyElement, item: Item) { t
EventListeners
。我读过很多帖子,人们遇到了问题,这是因为他们没有删除他们添加的相同功能,阅读时我想我可能也有同样的问题,但我该如何处理呢?我不完全理解这个问题的答案
class DragAndDrop {
item: Item;
documentBody: HTMLBodyElement;
constructor(documentBody: HTMLBodyElement, item: Item) {
this.documentBody = documentBody;
this.item = item;
this.documentBody.addEventListener("mousedown", this.onmousedown.bind(this));
}
onmousedown(event: MouseEvent): void {
if (CollisionDetector.pointInRect(event.clientX, event.clientY, this.item)) {
this.documentBody.addEventListener("mousemove", this.onMouseMove.bind(this));
this.documentBody.addEventListener("mouseup", this.onMouseUp.bind(this));
}
}
onMouseMove(event: MouseEvent): void {
this.item.x = event.clientX;
this.item.y = event.clientY;
}
onMouseUp(event: MouseEvent): void {
this.documentBody.removeEventListener("mousemove", this.onMouseMove.bind(this));
this.documentBody.removeEventListener("mouseup", this.onMouseUp.bind(this));
}
}
在代码中使用
.bind
问题
创建函数的副本李>.bind
foo.bind!==foo
不是类型安全的:bind
mousedown
为您做这件事:
class DragAndDrop {
item: Item;
documentBody: HTMLBodyElement;
constructor(documentBody: HTMLBodyElement, item: Item) {
this.documentBody = documentBody;
this.item = item;
this.documentBody.addEventListener("mousedown", this.onmousedown);
}
onmousedown = (event: MouseEvent): void => {
if (CollisionDetector.pointInRect(event.clientX, event.clientY, this.item)) {
// Similarly ...
}
}
}
更多
有关箭头函数的更多信息:在代码中使用
.bind
问题
创建函数的副本李>.bind
foo.bind!==foo
不是类型安全的:bind
mousedown
为您做这件事:
class DragAndDrop {
item: Item;
documentBody: HTMLBodyElement;
constructor(documentBody: HTMLBodyElement, item: Item) {
this.documentBody = documentBody;
this.item = item;
this.documentBody.addEventListener("mousedown", this.onmousedown);
}
onmousedown = (event: MouseEvent): void => {
if (CollisionDetector.pointInRect(event.clientX, event.clientY, this.item)) {
// Similarly ...
}
}
}
更多
有关箭头功能的更多信息: