JavaScript 中对象定义末尾的这个方括号后缀是什么意思?

What does this square bracket suffix at the end of the object definition in JavaScript mean?

JavaScript code

我在 GitHub 上浏览某人的代码时遇到了这个,但不知道这意味着什么。我会 googled 但我是 JavaScript 的新手,不知道如何 google 它。如有任何信息,我们将不胜感激!

var charStr = String.fromCharCode(evt.which);
var value   = (evt.type == 'keydown') ? true : false;

idx = {
  '1': 0x1,'2': 0x2,'3': 0x3,'4': 0x4,
  'Q': 0x4,'W':0x5,'E': 0x6,'R': 0xD,
  'A': 0x7,'S':0x8,'D': 0x9,'F': 0xE,
  'Z': 0xA,'X':0x0,'C': 0xB, 'V':0xF,
}[charStr];

这等同于说:

const idxObj = {
  '1': 0x1,'2': 0x2,'3': 0x3,'4': 0x4,
  'Q': 0x4,'W':0x5,'E': 0x6,'R': 0xD,
  'A': 0x7,'S':0x8,'D': 0x9,'F': 0xE,
  'Z': 0xA,'X':0x0,'C': 0xB, 'V':0xF,
};
idx = idxObj[charStr];

它正在创建对象并同时访问一个对象属性。

进一步阅读:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Property_accessors#Bracket_notation

基本上您所看到的是在同一定义中直接访问对象中的 属性。

让我们用一个更简单的例子:

const ourObjectResponse = {
    foo: 'bar'
}['foo']
console.log(ourObjectResponse) // 'bar'

这是因为您正在做的是定义一个对象并立即从该对象获取一个值。

您可以将其更改为:

const ourObject = {
    foo: 'bar'
};
const ourObjectResponse = ourObject['foo']
console.log(ourObjectResponse) // 'bar'

您可以使用方框符号访问 属性 对象。这通常在 属性 中包含 space 的情况下很有用。喜欢 obj['名字'].