的Javascript括号符号来访问存储在另一个变量
问题描述:
所以我要通过YDKJS系列和我碰到此位,我想更多的帮助,理解this来到一个属性/键:的Javascript括号符号来访问存储在另一个变量
当然,支架注释也非常有用,如果你想访问属性/关键,但名字被存储在另一个变量,如:
var obj = { a: "hello world", b: 42 }; var b = "a"; obj[b]; // "hello world" obj["b"]; // 42
我无法理解var b = "a";
部分。为什么不是b
它自己的变量包含字符串"a"
?它超出了obj
的范围,但是它引用obj
中的变量?那么var b
现在是obj的一部分,您可以使用obj[b]
来引用它吗?
答
所有属性都可以通过括号表示法进行访问,而属性名称可以通过字符串进行访问。试想一下:
'Hello world'.length
等同于:
'Hello world'['length']
正如你所看到的,物业可通过支架的访问和财产的字符串表示。因此,在例如:
var obj = {
a: "hello world",
b: 42
};
var b = "a";
obj[b]; // "hello world"
obj["b"]; // 42
变量b
只是存储字符串“一”,然后像这样使用:
obj[b] == obj["a"]
以上,obj[b]
是一样的obj["a"]
。
你已经变得困惑。变量b
和"b"
未关联。变量b
具有值"a"
。
'a'刚刚被替换,它访问一个属性,返回'Hello world'。第二接入b属性返回42
答
Xufox已经回答了我的问题:
没有,
b
是"a"
。它与obj
无关。obj[b]
是obj["a"]
这是obj.a
这是"hello world"
。obj["b"]
是obj.b
,它是42
。您也可以选择var c = "a"
和obj[c]
。
obj[b]
正在使用变量b
。由于b
是"a"
,obj[b]
将评估为obj["a"]
,然后将评估为"hello world"
。
不,'b'是''a“'。它与'obj'无关。 'obj [b]'是'obj [“a”]'',它是''hello world''的'obj.a'。 'obj [“b”]'是'obj.b',它是'42'。你可以选择'var c =“a”'和'obj [c]'来代替。 – Xufox
OH ok。得到它了。谢谢。-duh- – Burt