Comments 13
let self = this;
object.on = (...arg)=> self.on(key, ...arg); //функция подписки
object.un = (...arg)=> self.un(key, ...arg); //функция отписки
для стрелочных функций не нужно делать let self = this, можно просто вызывать this, у них контекст того, где они были созданы
А почему не WeakMap и WeakSet?
Вызов множества cb происходит через forEach. WeakMap не позволяет его использовать.
Вы говорите про это:
this.listeners.set(key, new Map());
Я про это:
В конструкторе OS
constructor() {
this.storage = new Map(); //поле хранения объектов
this.listeners = new Map(); //поле хранения слушателей
this.serviceField = new Set([on
, 'un']); //”сервисные” поля, т.е. поля объекта используемые библиотекой.
}
Да, крутую штуку сделал. И за хорошие пояснения отдельное спасибо.
UFO just landed and posted this here
Вы применяете где-то данный функционал? Просто интересно где это может пригодиться. А за статью спасибо!
Как и O.o для отслеживания событий изменения объектов. У нас много ассинхрона в проекте.
Как хранилище задумывалось для того, чтобы не хранить объекты в глобальной области, а подключать к модулям в случае необходимости.
Однако в данный момент мы по большей части отошли от этого в сторону использования локальной шины данных реализованной на клиенте.
Спасибо Вам, за интересные вопросы.
Как хранилище задумывалось для того, чтобы не хранить объекты в глобальной области, а подключать к модулям в случае необходимости.
Однако в данный момент мы по большей части отошли от этого в сторону использования локальной шины данных реализованной на клиенте.
Спасибо Вам, за интересные вопросы.
Sign up to leave a comment.
Односторонний binding данных с ECMAScript-2015 Proxy