JavaScript概念问题与代码。请解释一下我得到的结果

JavaScript概念问题与代码。请解释一下我得到的结果,javascript,arrays,node.js,ecmascript-6,es6-promise,Javascript,Arrays,Node.js,Ecmascript 6,Es6 Promise,我很难理解下面的代码,我在不理解概念的地方写了一条评论,到底是怎么回事 var ob = {}; var ob2 = ['name']; for(var op of ob2) { ob[op]='at'; // here i dont understand what is happening, why here is an array type brackets } console.log(ob); OUTPUT IS name:'at' 这就是javascript中动态访

我很难理解下面的代码,我在不理解概念的地方写了一条评论,到底是怎么回事

var ob = {};
var ob2 = ['name'];
for(var op of ob2)
{
      ob[op]='at'; // here i dont understand what is happening, why here is an array type brackets

}
console.log(ob);

OUTPUT IS


name:'at'

这就是javascript中动态访问或分配对象属性的语法


您可以将其视为正在执行:ob.name='at'。

基本上,它正在访问对象ob的属性。在本例中,正在访问和创建新属性

循环将获取每个索引值,并为每个索引值指定/创建一个新属性

这种方法是一种在对象中动态创建属性名称的方法

ob['name'] = 'at';
ob.name = 'at'; // Just to illustrate

稍微阅读一下这里的文档->

有两种方法可以访问JavaScript中的对象属性

var person = {
  name: 'Jane'
}

person.name
// or
person['name'] 
// both return jane
在您的例子中,它遍历名为ob2的数组成员 该数组的第一个也是唯一一个元素是字符串名,它作为一个属性提供给该对象,如下所示

ob['name'] = 'at';
// or
ob.name = 'at';
何时使用点上方的括号[]。 如果您在运行时不知道道具名称,则需要使用括号,如果您知道,则可以选择点符号或括号