Я пытаюсь написать отношение объекта, которое следует шаблону наблюдателя, где наблюдатель заботится о конкретном наборе событий, происходящих с субъектом.
Я не уверен, что это стандарт на 100%, но в том виде, в котором я его построил, эти объекты событий определяются в наблюдателе с пользовательскими обратными вызовами, которые срабатывают при возникновении события. Когда на субъекте происходит событие, он проходит через всех своих наблюдателей и смотрит, кто наблюдает за этим событием. Если он находит наблюдателей, наблюдающих за этим событием, он запускает обратный вызов события наблюдателя.
Поскольку я хочу, чтобы мои наблюдатели имели возможность добавлять и удалять на лету события, которые нужно наблюдать, мне нужно, чтобы объект события имел возможность удалять себя после запуска своего обратного вызова... скажем, например, если мой наблюдатель хочет отреагировать на событие только один раз, а затем больше не отслеживать его.
Это кажется хорошим планом, но я знаю, что объект JavaScript не может вызывать метод delete() для самого себя.
Мне просто любопытно, кто-нибудь еще сталкивался с этим и нашел эффективное решение.
Моя единственная мысль заключалась в том, что я мог бы передать ссылку на родительский объект-наблюдатель, на его дочернее событие, а затем, когда произойдет обратный вызов, я мог бы вызвать метод внутри родителя... что-то вроде removeEvent(this)
передачи самого события этой функции. Затем функция removeEvent может выделить событие из своего массива событий. Единственной сложной проблемой будет поиск местоположения этого объекта события в массиве. (принимаю предложения и по этому поводу, спасибо!).
Заранее спасибо за помощь!