¿Cómo hago que las instancias de una clase sean comparables y que se pueda recolectar basura al mismo tiempo?
Estoy escribiendo unclass
y quiere que las instancias sean comparables por<
, >
, ==
.
Por<
y>
, valueOf
funciona bien
==
es diferente, sin embargo, pero quiero tener eso también. Podría implementar fácilmente unaisEqual
método, pero eso no es lo mismo.
Mi solución actual es un caché para todos los objetos creados:
const cache = {}
class Comparable {
constructor (id) {
if (cache[id]) return cache[id]
cache[id] = this
}
}
De esa manera, la comparación funciona. Desafortunadamente, esto también bloquea al recolector de basura.
Hay otra forma de habilitarnew Comparable(42) == new Comparable(42)
, eso no impide GC?