JavaScript 代码的概念性问题。请解释我得到的输出

JavaScript Conceptual Issue with a code. Please give an explanation for the output i am getting

我很难理解下面的代码,我在我不理解这个概念的地方发表了评论,究竟是怎么回事

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 的 属性。在本例中,正在访问和创建新属性。

循环获取每个索引值,并为每个 assign/create 使用该索引值的新 属性。

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

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

在这里稍微阅读一下文档 -> JavaScript object basics - Learn web development | MDN

在JavaScript

中有两种访问对象属性的方法
var person = {
  name: 'Jane'
}

person.name
// or
person['name'] 
// both return jane

在您的例子中,它遍历名为 ob2 的数组成员 该数组的第一个也是唯一的元素是一个字符串 name 并将其作为道具提供给该对象,如下所示

ob['name'] = 'at';
// or
ob.name = 'at';

何时使用方括号 ([]) 而不是点 (.) 如果您在运行时不知道 prop 名称,则需要使用括号,如果您知道,则可以选择点符号或括号