Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在JavaScript中使用内存位置作为哈希键_Javascript_Node.js - Fatal编程技术网

在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));