在JavaScript中使用内存位置作为哈希键
假设堆上有两个对象:在JavaScript中使用内存位置作为哈希键,javascript,node.js,Javascript,Node.js,假设堆上有两个对象: const x = {foo:'bar'}; const y = {foo:'bar'}; const z = {foo:'bar'}; 有没有一种方法可以像这样把它们放到散列中: const c = {x: 'yolo', y: 'rolo', z: 'cholo'}; 唯一可行的方法是,如果x、y和z由它们在内存中的位置表示。我认为这在某些语言中是可能的,在JS中可能吗?是的,您可以使用: 您可以将x、y和z序列化为字符串。@Scovetta-除了在示例中会产生三个
const x = {foo:'bar'};
const y = {foo:'bar'};
const z = {foo:'bar'};
有没有一种方法可以像这样把它们放到散列中:
const c = {x: 'yolo', y: 'rolo', z: 'cholo'};
唯一可行的方法是,如果x、y和z由它们在内存中的位置表示。我认为这在某些语言中是可能的,在JS中可能吗?是的,您可以使用:
您可以将x、y和z序列化为字符串。@Scovetta-除了在示例中会产生三个相同的字符串之外。@nnnnnn这是一个很好的观点,尽管我想它们可能是相同的对象,因为它们是常量(写时复制)。@Scovetta:这不是
const
的意思,它们保证不是相同的对象(x!==y
)@Ryan你是对的——正在考虑常量字符串。如果有人好奇。酷,你能确认这将它们在内存中的位置用作唯一字符串吗?一定是对的?@AlexanderMills:“内存中的位置”是一个实现细节;映射根据其规范进行操作。对于对象键a
,是的,只有a
才能在映射中获得相应的值。
const c = new Map([
[x, 'yolo'],
[y, 'rolo'],
[z, 'cholo'],
]);
console.log(c.get(x));