使用点符号和括号显示..内部的属性..循环中

use of dot notation and bracket to display properties inside for...in loop

本文关键字:内部 属性 循环 显示 符号      更新时间:2023-09-26

我看到了一些以前问过的问题。但我仍然不太清楚什么时候可以使用点/括号表示法来显示对象的属性,这就是我来这里问这个问题的原因。这里我有两个例子。在我的第一个例子中,console.log用点表示法显示对象属性,但用括号显示未定义的属性

<html>
<body>
<script>
var obj={
   name:'lol',
   age:10
}
console.log(obj[name]);
console.log(obj.name);
</script>
</body>
</html>

在我的第二个例子中,我使用了for。。。in方法来迭代对象属性。在这种情况下,点表示法不起作用,但括号表示法起作用。但是如果console.log()键,它将显示属性名称。如果是,那么为什么它在显示属性值时出现问题我的意思是,如果key==name是一个属性,那么obj.key应该等价于obj.name,在我看来,它应该不会有任何问题来显示它的值。这是第二个:

<html>
<body>
<script>
   var obj={
      name:'lol',
      age:10
      }
for(key in obj){
   console.log(key);
   console.log(obj.key);
}
</script>
</body>
</html>

时必须使用方括号表示法

  • 属性名称存储在变量
  • 属性名称包含标识符中不允许使用的字符

当上述规则不要求您使用方括号表示法时,通常认为使用点表示法是一种很好的风格。


var name = "foo";
obj.foo === obj["foo"] === obj[name]; // All equivalent (but the middle one is generally considered to be poor style)
var other = "one-two";
obj[other] === obj["one-two"]; // Equivalent

// obj.one-two; would be "Subtract two from obj.one".
var obj = { one: 1 };
var two = 2;
(obj.one-two) === (obj.one - two) === -1;