一尘不染

JavaScript属性访问:点符号与方括号?

javascript

除了显而易见的事实,第一种形式可以使用变量而不仅仅是字符串文字,是否有理由在另一种形式上使用另一种形式?如果是这样,在哪种情况下?

在代码中:

// Given:
var foo = {'bar': 'baz'};

// Then
var x = foo['bar'];

// vs. 
var x = foo.bar;

上下文:我已经编写了一个代码生成器来生成这些表达式,我想知道哪种更好。


阅读 675

收藏
2020-04-22

共1个答案

一尘不染

方括号符号允许使用点符号不能使用的字符:

var foo = myForm.foo[]; // incorrect syntax
var foo = myForm["foo[]"]; // correct syntax

包括非ASCII(UTF-8)字符,如myForm["ダ"]

其次,方括号表示法在处理以可预测的方式变化的属性名称时非常有用:

for (var i = 0; i < 10; i++) {
  someFunction(myForm["myControlNumber" + i]);
}

Roundup:

  • 点符号的书写速度更快,阅读更清晰。
  • 方括号表示法允许访问包含特殊字符的属性以及使用变量选择属性

不能与点符号一起使用的字符的另一个示例是 本身包含点的属性名称

例如,一个json响应可能包含一个名为的属性bar.Baz

var foo = myResponse.bar.Baz; // incorrect syntax
var foo = myResponse["bar.Baz"]; // correct syntax
2020-04-22