【问题标题】:In javascript- save variable as a reference在 javascript- 中保存变量作为参考
【发布时间】:2016-01-21 13:46:28
【问题描述】:
var foo = {prop:1};
var bar = {prop:2};
var obj = {};
obj[foo] = 'value';
console.log(obj[bar]); //'value'

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

【问题讨论】:

标签: javascript object pass-by-reference


【解决方案1】:

因为

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

【讨论】:

  • 这是一种隐含行为 obj[foo] 正在做 obj[foo.toString()]
  • 我将创建一个新对象-var cc= new Object() 然后console.log(obj[cc]); //value 结论:这里对象cc 将被转换为"[object Object]"。如果我在控制台中查看obj - Object {[object Object]: "value"}
  • @jiten 如我的回答所述
猜你喜欢
  • 2017-10-18
  • 2015-02-17
  • 2020-04-02
  • 1970-01-01
  • 2021-10-26
  • 2023-03-24
  • 1970-01-01
  • 2011-02-16
相关资源
最近更新 更多