2

可能重复:
JavaScript 属性访问:点符号与括号?

<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>
  1. 为什么foo.cool返回我 undefined where as foo[cool] returns me kevin
  2. cool 实际上是如何在 foo 对象中引用我的 name 属性的。
4

3 回答 3

4
  1. cool属性未定义在 上,foo因此foo.cool未定义。如果你这样做了foo.name,它会返回kevin

  2. coolinfoo[cool]是您在它上面的行中定义的那个,所以它实际上是foo['name'],它已定义并具有 value kevin

于 2012-12-29T22:46:23.107 回答
1

您可以访问这些属性...

  • 从字面上看他们的名字:property.name

  • 间接地通过一个表达式来计算他们的名字: property[expr]

因此,如果表达式cool具有 value 'name',则 then与orfoo[cool]相同。foo['name']foo.name

括号还允许...

1) 更复杂的表达式喜欢foo["data_"+variable]轻松访问名为 like 的字段data_something
2) 不是简单标识符的属性名称,例如你可以说foo["I'm long!"].

我希望这个解释能为你带来光明。

于 2012-12-29T22:54:11.380 回答
1

在 var foo = { name: 'kevin'}; 您将对象或字典存储到该变量...现在是键值对...因此您可以使用键访问对象的值...

因为它是一个键值对......你不能使用'。'访问它 运算符...因为 foo 不是类... foo 的类型将是字典或对象...

因此,要访问您需要使用 [] 括号的值...

于 2012-12-29T22:56:18.147 回答