Я написал наблюдателя в javascript. Вы можете активировать такие события:Удалить и добавить элементы в список аргументов функций в javascript
ClassThatExtendsEvent.triggerEvent('EventName', arg1, arg2, ..., argn)
Существует переменное количество аргументов, при этом первым аргументом является имя события. У меня также есть подписчики, которые сохраняются в частной собственности моего класса событий. Они вызывались, как это:
Event.prototype.triggerEvent = function() {
var callbacks = this._events[eventName];
if(callbacks !== undefined) {
for (var i = 0, l = callbacks.length; i < l; i++) {
// I do not need the first argument here!!!
callbacks[i].apply(callbacks[i], arguments);
}
}
}
Однако абоненты знают название события, следовательно, это может быть пропущено. Но я не знаю, как удалить один аргумент из списка (поскольку он не является массивом, но, похоже, является своего рода объектом).
Мне также нужно прочитать имя события, как только оно будет удалено, потому что после отсутствия прямых подписчиков вступает в действие глобальная система событий. Эта глобальная система событий нуждается в имени.
Поэтому вся функция выглядит следующим образом:
Event.prototype.triggerEvent = function() {
// First we deliver to direct subscribers
var callbacks = this._events[eventName];
if(callbacks !== undefined) {
for (var i = 0, l = callbacks.length; i < l; i++) {
// I do NOT need the first argument here!!!
callbacks[i].apply(callbacks[i], arguments);
}
}
// Now we broadcast the event to the entire system
// I DO need the first argument here!!!
Facade.getInstance().broadcastEvent.apply(Facade.getInstance(), arguments);
}
Как бы реализовать это?
Какое злобное решение! – ooxi
действительно приятно!работает как шарм – cesarpachon