Como tornar instâncias de uma classe comparáveis e colecionáveis de lixo ao mesmo tempo?

Eu estou escrevendo umclass e deseja que as instâncias sejam comparáveis em<, >, ==.

Para< e>, valueOf funciona bem

== é diferente, no entanto, mas quero ter isso também. Eu poderia facilmente implementar umisEqual método, mas isso não é o mesm

minha solução atual é um cache para todos os objetos criado

const cache = {}

class Comparable {
  constructor (id) {
    if (cache[id]) return cache[id]

    cache[id] = this
  }
}

Dessa forma, a comparação funciona. Infelizmente, isso também bloqueia o coletor de lix

Existe outra maneira de ativar onew Comparable(42) == new Comparable(42), isso não impede o GC?

questionAnswers(2)

yourAnswerToTheQuestion