Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Проверьте код (https://javascript.ru/forum/misc/75924-proverte-kod.html)

MC-XOBAHCK 17.11.2018 17:51

Проверьте код
 
В объекте есть два метода - один устанавливает слушатели, второй их удаляет
const App = {
    typesAll: document.querySelectorAll('.type'),
    
    event: function () {
        this.typesAll.forEach(item => item.addEventListener('click', this.selectType));
        this.typesAll.forEach(item => item.addEventListener('keypress', this.selectType));
    },

    removeEvent: function () {
        this.typesAll.forEach(item => item.removeEventListener('click', this.selectType));
        this.typesAll.forEach(item => item.removeEventListener('keypress', this.selectType));
    }
}

Подскажите, такой код правильный? Обработчики будут удаляться при вызове App.removeEvent() ?

Не мешает ли здесь то что установка и удаление слушателей находятся в разных методах объекта, и то что они через forEach прописаны?

Исправьте пожалуйста, если у меня неправильно написано.

Aetae 17.11.2018 20:29

Удаляются те же методы на тех же элементах, так что всё будет работать.

...кроме самих методов, если те хоть как-то зависимы от this.:)

MC-XOBAHCK 17.11.2018 20:55

Aetae,
Спасибо за подсказку, а то у меня были сомнения. Решил у опытных людей спросить.
С this учту замечание, обязательно проверю на контекст.


Часовой пояс GMT +3, время: 14:34.