是否可以制作类似 WeakMap 的两种方式(通过其键获取值,或通过其值获取键)?
用法如下所示(在 TypeScript 语法中更好地说明):
class TwoWayWeakMap {
// What goes here?
}
class SomeClass {}
const map = new TwoWayWeakMap<SomeClass, number>()
const o = new SomeClass
map.set(o, 42)
console.log(map.get(o)) // logs "42"
console.log(map.keyFrom(42)) // logs "SomeClass {}" (the `o` object)
在以后的任何时候,如果o
除了在内部之外不再被引用TwoWayWeakMap
,那么可以收集指向的SomeClass
对象。o
笔记!map.set(k, v)
必须允许 to的第二个参数是任何东西,而不仅仅是对象。v
例如,可以是一个number
。