Подтвердить что ты не робот

Создание регулярной слабой ссылки в Javascript с использованием WeakMaps

Я пытаюсь сделать очевидную вещь с WeakMaps: я хочу создать слабую ссылку. В частности, я хочу иметь список слушателей событий без этого списка, влияющих на жизнь слушателя.

Таким образом, я был очень рад найти WeakMaps, пока не увидел, что они были созданы только для того, чтобы удовлетворить один (довольно редкий) прецедент, расширяя объекты, которые иначе были запечатаны. Я не могу думать, когда я когда-либо хотел это сделать, но мне нужны списки слушателей все время.

Можно ли использовать WeakMaps каким-то умным способом, я не думал об этом?

4b9b3361

Ответ 1

Нет, невозможно использовать WeakMaps для создания слабой ссылки. WeakMaps не являются итерируемыми, для их использования вам всегда нужен ключ. Это было преднамеренное решение (также здесь), так что сбор мусора не влияет на семантику вашей программы - это именно то, что вы хотите.

Реальные слабые ссылки могут поставляться с ES8, см. здесь и там для черновиков.