【发布时间】:2021-03-05 06:37:32
【问题描述】:
我有一个 Rectangle 类,它有一个名为 id 的 prop,它指示 Rectangle 实例的唯一性
class Rectangle {
constructor(desc) {
this.desc = desc
this.id = Symbol()
}
}
稍后我需要将id 放入其他数据结构中,并且我需要一种使用id 的快速方法来查找Rectangle 实例
为此,我需要手动创建地图,例如
const r1 = new Rectangle('first')
const r2 = new Rectangle('second')
const r3 = new Rectangle('third')
const map = {
[r1.id]: r1,
[r2.id]: r2,
[r3.id]: r3,
}
所以如果需要,我可以获取r1 的参考
map[r1.id]
我想知道是否有一种编程方式来实现这种反向映射,其中id 是键,Rectangle 实例是值?
另外,如果有人可以为地图建议一个更好的名称,我将不胜感激 - 现在名称 map 并没有真正的描述性。
最后,我想知道我们是否可以摆脱id 并只使用Rectangle 实例的引用?我知道答案可能是“视情况而定”,但我认为大多数时候我们需要id 来处理实例或对象。我想知道在什么情况下只使用引用不会削减它?
【问题讨论】:
-
你想达到什么目的?而不是地图,它可能是“数字”。您需要有关订单的信息吗?数字可以存储集合/数组。我会存储引用 - 所以对矩形的访问将在语言级别上解决......
-
@Ouroborus 是的,我知道 JavaScript 中的每个对象都是不同的内存指针,它们永远不会相等。需要
id不是因为我不知道我只能比较参考,而是因为它是更大系统的一部分。 -
@Ouroborus 键也可以是 javascript 中的符号。我不确定我是否理解你在这里的建议。你能写一个答案吗?谢谢
-
嗨,这看起来像多个问题。
-
“也”位非常小,我可能不会为此说什么,但“最后”位是一个完全不同的问题,不适合您的标题。我认为这是一个很好的问题,应该引起它自己的关注,如果它还没有出现在网站上的话。
标签: javascript oop