Я пишу class
и хочу, чтобы экземпляры были сопоставимы по <
, >
, ==
.
Для <
и >
, valueOf
работхорошо.
==
отличается, однако, но я хочу иметь это также.Я мог бы легко реализовать метод isEqual
, но это не то же самое.
Мое текущее решение - это кэш для всех созданных объектов:
const cache = {}
class Comparable {
constructor (id) {
if (cache[id]) return cache[id]
cache[id] = this
}
}
Таким образом, сравнение работает,К сожалению, это также блокирует сборщик мусора.
Есть ли другой способ включения new Comparable(42) == new Comparable(42)
, который не мешает сборке мусора?