star.addEventListener("mouseover", this.mouseOverStar.bind(this));
star.addEventListener("mouseout", this.mouseOutStar.bind(this));
star.addEventListener("click", this.clickOnStar.bind(this));
star.removeEventListener("mouseover", this.mouseOverStar.bind(this));
star.removeEventListener("mouseout", this.mouseOutStar.bind(this));
star.removeEventListener("click", this.clickOnStar.bind(this));
.onclick
(как в прочем и на любое другое из .on...
можно повесить лишь один обработчик на один элемент, при попытке повесить следующий предыдущий будет потерян.6. Вот тут не понял. Обработчики на каком уровне абстракции находятся? Я бы делал обработчики на уровне объектов
7. Конечно на отдельную. Причем никак не связанную с физикой
2. Нет. Слой - это свойство объекта.
.removeEventListener(...)
сработала, нужно передать ей вторым аргументом ту же самую функцию, что и была установлена как слушатель в функции.addEventListener(...)
а так как вызов функции с биндом каждый раз создает новую функцию, то:
this.mouseOverStar.bind(this)
НЕРАВНОthis.mouseOverStar.bind(this)
this.mouseOutStar.bind(this)
НЕРАВНОthis.mouseOutStar.bind(this)
this.clickOnStar.bind(this)
НЕРАВНОthis.clickOnStar.bind(this)
и следовательно
.removeEventListener(...)
не сработает