【问题标题】: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';
    

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

    【讨论】:

      【解决方案3】:

      基本上,它访问对象ob 的属性。在这种情况下,正在访问和创建新属性。

      循环获取每个索引值,并为每个使用该索引值分配/创建一个新属性。

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

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

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

      【讨论】:

        猜你喜欢
        • 2014-04-18
        • 1970-01-01
        • 2015-07-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多