Я пишу много небольших библиотек и модулей, и обычно эти библиотеки и модули имеют связанные с ними события. До сих пор я писал это, как (не укорачивается вниз много):Самый эффективный способ написать пользовательский .on() /. Bind() JavaScript
Library.prototype.on = function(event, callback){
self = this;
self.events[event] = callback;
}
то пользователь будет делать что-то такое, как:
Library.on('foo',function(){
console.log('bar');
});
Есть лучше более производительный способ сделать это, хотя или это стандартный способ реализации этого? Я хочу простой API, чтобы я мог попасть в любой проект JS для поддержки этого поведения.
Спасибо, это работает отлично :) –
Только странно, что только удаляет удаления слушателя последний добавил. Я думаю, что предполагаемое использование 'removeListener ('event')', вероятно, связано с тем, как люди используют 'unbind ('event')' в jQuery, где он удаляет все ссылки (если вы не добавите пространство имен, например 'event.foo') –
@OscarGodson вам нужно удалить всех слушателей вручную. При вызове 'removeListener (ev)' удаляется последний прослушиватель по простому совпадению. (индекс равен -1, поэтому он удаляет последний элемент). Вы должны называть 'removeListener (ev, обработчик)'. – Raynos