Javascript - 共享指针范式

Javascript - Shared Pointer Paradigm

所以,我在 Javascript 中写了一个 API。理想的要求包括它支持这样的结构:

最好(虽然不是绝对必要):

另外,当我在 ES6 中写这篇文章时,WeakMaps、WebAssembly 和任何其他现代 JS API 都是允许的答案。

这种结构在Javascript中可行吗?如果是这样,这种实现的结构是什么?或者,这完全超出了Javascript的能力范围?

Is this structure possible in Javascript?

是的。但是你不能以任何方式拦截垃圾回收,如果一个对象的所有引用都丢失了,它会悄无声息地消失,没有人会注意到它。因此,如果你想注意到它,你必须明确地引起它:

 class Reference {
   constructor(to) { 
     this.to = to; 
     to.link();
   }

   free() { 
     this.to.unlink(); 
     this.to = undefined;
   }
 }

 class Referenceable {
   constructor() {
     this.count = 0;
   }

   link() { this.count++ }
   unlink() {
     if(!(--this.count)) {
       // your last words
     }
   }
 }