在javascript-保存变量中作为参考

jit*_*ten 0 javascript object pass-by-reference

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

这是相当混乱的原因obj[bar]obj[foo]现在一样,而foobar不一样的.

Hac*_*eto 8

因为

obj[foo]='value';
Run Code Online (Sandbox Code Playgroud)

是相同的

obj["[object Object]"]='value';
Run Code Online (Sandbox Code Playgroud)

对象键是字符串,所以它在内部 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
Run Code Online (Sandbox Code Playgroud)