var foo = {prop:1};
var bar = {prop:2};
var obj = {};
obj[foo] = 'value';
console.log(obj[bar]); //'value'
令人困惑的是为什么 obj[bar]
和 obj[foo]
现在是相同的,而 foo
和 bar
不一样。
最佳答案
因为
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/