Урок по js от сюда
Рассматривается подход подписки событий через миксины
var eventMixinOn = {
/**
* Подписка на событие
* Использование:
* menu.on('select', function(item) { ... }
*/
on: function(eventName, handler) {
if (!this._eventHandlers) this._eventHandlers = {};
if (!this._eventHandlers[eventName]) {
this._eventHandlers[eventName] = []; // *** почему массив а не ссылка на функцию обработчик 'handler'
}
this._eventHandlers[eventName].push(handler);
}
}
Вот как я понимаю выполнимую подписку:
-
передается имя события и функция обработчик
-
если не существует внутренее свойство
_eventHandlers
то оно создается (если его нет то мы выполняем первую подписку) -
далее выполняется проверка - если во внутреннем свойстве
_eventHandlers
нет свойстваeventName
то ему присваивается значение пустого массива -
в
this._eventHandlers[eventName]
запушивается ссылка на функцию обработчик
Не понимаю зачем создавать массив и запушивать в него функцию обработчик вместо того что бы передать в свойство this._eventHandlers[eventName]
сразу ссылку на функцию обработчик, вот так
this._eventHandlers[eventName] = handler
Подскажите почему используется запись
if (!this._eventHandlers[eventName]) {
this._eventHandlers[eventName] = [];
}
this._eventHandlers[eventName].push(handler);
а не this._eventHandlers[eventName] = handler
Спасибо