2015-04-05 3 views
3

Say добавить load события в окно, как так:Должен ли я всегда удалятьEventListener?

window.addEventListener("load",initialize); 

Должен ли я затем удалить слушатель события нагрузки из окна после того, как событие срабатывает? Он срабатывает только один раз, но будет ли он продолжать слушать после этого?

Это достаточно просто сделать:

function initialize(event_){ 
    /* Just by adding this line. */ 
    window.removeEventListener("load",initialize); 
} 

Но что избыточна или будет, что на самом деле пользу производительность моей программы? Я только спрашиваю, потому что событие «load» срабатывает только один раз, поэтому было бы разумно, если бы он просто разрешил себя. Я никогда не слышал о саморазвивающемся слушателе, хотя ... Любые мысли?

Редактировать: Кроме того, меня не интересует событие «load», просто общий сценарий, в котором слушатель продолжает прослушивать событие, которое срабатывает только один раз.

+0

Если вы не уверены в этом методе, почему бы не попробовать 'window.onload = initialize;' Это вызовет вашу функцию инициализации, но не будет продолжаться как eventlistener. Я не вижу причин для удаления прослушивателя событий загрузки, но я просто предоставляю другой параметр/метод, но оба будут делать то же самое. – NewToJS

+1

Нет причин для этого. (@NewToJS ?? установка свойства 'onload'' window' - это еще один способ установления обработчика событий.) – Pointy

+0

@Pointy Я понимаю, что я просто разделяю другой метод запуска его, но, как вы четко указали, нет никаких причин для удаления события. – NewToJS

ответ

1

Должен ли я удалить прослушиватель событий нагрузки из окна после того, как событие будет запущено?

Я никогда не видел этого, поэтому я не думаю, что в этом есть настоящая необходимость.

Только один раз, но продолжит ли это прослушивание после этого?

Он был только один раз выпущен DOM, да. Но он будет продолжать слушать, вы можете легко запустить событие load вручную (см. Примеры MDN).

Но является ли это излишним или будет ли это полезным для исполнения моей программы?

Как правило, это излишний, поскольку это не имеет большого значения. Конечно, это может вызвать сбор мусора на initialize, что может сэкономить немного памяти (или больше, в зависимости от структуры кода) и повысить производительность, сделав ее доступной для остальной части вашего приложения.

Смежные вопросы