【问题标题】:JavaScript Conceptual Issue with a code. Please give an explanation for the output i am gettingJavaScript 代码的概念性问题。请解释我得到的输出
【发布时间】:2019-08-07 11:55:41
【问题描述】:
我很难理解下面的代码,我已经在我不理解这个概念的地方发表了评论,到底发生了什么
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
arrays
node.js
ecmascript-6
es6-promise
【解决方案1】:
这只是在 javascript 中动态访问或分配对象属性的语法。
你可以把它想象成你在做:ob.name = 'at'。
【解决方案2】:
在 JavaScript 中有两种访问对象属性的方法
var person = {
name: 'Jane'
}
person.name
// or
person['name']
// both return jane
在您的情况下,它遍历名为 ob2 的数组的成员
该数组的第一个也是唯一一个元素是字符串name,它作为道具被赋予该对象,如下所示
ob['name'] = 'at';
// or
ob.name = 'at';
何时使用方括号([])而不是点(.)
如果您在运行时不知道道具名称,则需要使用括号,如果您知道,则可以选择点表示法或括号