Итак, я пишу API в Javascript.Идеальные требования включают в себя поддержку такой структуры:
- Существует два класса:
class Core
и class Public
.Оба имеют член id
. - Не может быть нескольких экземпляров
Core
с одинаковым id
, но каждый должен иметь уникальный id
;однако может быть любое количество экземпляров Public
с одинаковыми экземплярами id
. Public
, каждый из которых имеет одну ссылку на экземпляр класса Core
с соответствующим значением для id
. Core
экземпляры должны собираться мусором, как только последний экземпляр Public
, указывающий на него, собирается сборщиком мусора. - Таким образом, когда создается и передается новый экземпляр
Public
id
, он собирает и присваивает свою ссылку либо существующему экземпляру Core
, если таковой существует, либо новому экземпляру Core
, если нет.
и предпочтительно (хотя и не совсем)обязательно):
- Когда отбрасывается последняя ссылка на экземпляр
Core
, на нем запускается метод (т. е. деструктор)
Также, как яя пишу это в ES6, WeakMaps, WebAssembly и любом другом современном JS API, допустим в ответе.
Возможна ли эта структура в Javascript?Если да, какова будет структура такой реализации?Или это полностью выходит за рамки возможностей Javascript?