.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(...) не сработает
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. Нет. Слой - это свойство объекта.
https://jsfiddle.net/lastuniverse/8147sjhq/1/