可能重复:
JavaScript property access: dot notation vs. brackets?
<script>
var foo = {
name: 'kevin'
};
document.write(foo.name);
document.write(foo['name']);
var cool = 'name';
document.write(foo.cool);
document.write(foo[cool]);
</script>
foo.cool
返回我未定义的foo[cool] returns
me kevin
。答案 0 :(得分:4)
cool
未定义foo
属性,因此foo.cool
未定义。如果您执行了foo.name
,则会返回kevin
。
cool
中foo[cool]
是您在其上方行中定义的那个,因此它实际上是foo['name']
,已定义且值为kevin
答案 1 :(得分:1)
您可以访问属性...
字面意思是他们的名字:property.name
间接由表达式评估为其名称:property[expr]
。
因此,如果表达式cool
的值为'name'
,则foo[cool]
与foo['name']
或foo.name
相同。
括号也允许......
1)更复杂的表达式,例如foo["data_"+variable]
,可以轻松访问名为data_something
,
的字段
2)非简单标识符的属性名称,例如,您可以说foo["I'm long!"]
。
我希望这个解释可以为你增添光彩。
答案 2 :(得分:1)
在var foo = {name:'kevin'};您将对象或字典存储到该变量...现在是一个键值对...所以您可以使用键访问对象的值...
因为它是一个键值对...你不能使用'。'来访问它。 operator ...因为foo不是一个类... foo的类型将是一个字典或对象......
所以,要访问您需要使用[] paranthesis ...