javascript - 在 javascript 中-将变量保存为引用

标签 javascript object pass-by-reference

var foo = {prop:1};
var bar = {prop:2};
var obj = {};
obj[foo] = 'value';
console.log(obj[bar]); //'value'

令人困惑的是为什么 obj[bar]obj[foo] 现在是相同的,而 foobar 不一样。

最佳答案

因为

obj[foo]='value';

相同
obj["[object Object]"]='value';

对象键是字符串,因此它在内部执行foo.toString()

foo.toString() === bar.toString()

如果用作键,每个对象都会返回“[object Object]”(不谈论数组,数字,字符串..)

<小时/>

您需要一些能够唯一标识您的对象的东西,如下所示

var foo = {id:"foo", prop:1};
var bar = {id:"bar", prop:2};
var obj = {};
obj[foo.id] = 'value';
console.log(obj[bar.id]); //undefined

关于javascript - 在 javascript 中-将变量保存为引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34925531/

相关文章:

javascript - 在数据表中创建空行

c# - 同一类的析构函数中的对象实例化和垃圾收集

oop - Go:接口(interface)中的可选方法

javascript - 如何定义 webpack 中 loader 的优先级?

javascript - 从外部网站获取内容?

javascript - 当 ES6 中存在结构相似性时,减少分配对象属性的冗余

java - 我们可以在java中使用引用传递吗?如果否,java.util.Arrays.sort 是如何工作的?

C++:是否会隐式复制结构

C++通过指针填充数组

javascript - 我们如何以一种形式使用 Angular 2 来处理事件