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]现在一样,而foo和bar不一样的.
因为
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)