【问题标题】:Square Brackets Javascript Object Key方括号 Javascript 对象键
【发布时间】:2015-12-07 13:12:38
【问题描述】:

谁能解释一下为什么/如何在 JavaScript 中分配键的以下方法是如何工作的?

a = "b"
c = {[a]: "d"}

返回:

Object {b: "d"}

【问题讨论】:

    标签: javascript ecmascript-6


    【解决方案1】:

    这是新的 ES2015(EcmaScript 规范,正式名称为 ES6)computed property name syntax。这是你从 ES3/5 中知道的 someObject[someKey] 赋值的简写:

    var a = "b"
    var c = {[a]: "d"}
    

    是语法糖:

    var a = "b"
    var c = {}
    c[a] = "d"
    

    【讨论】:

      【解决方案2】:

      确实,[] 的使用提供了一种极好的方法,可以在创建 JavaScript 对象时将变量的实际值用作 key/property >。

      我对上面的答案非常满意,我很感激,因为它让我可以用一个小例子来写这个。

      我已经在 Node REPL(Node shell)上逐行执行了代码。

      > var key = "fullName";     // Assignment
      undefined
      >
      > var obj = {key: "Rishikesh Agrawani"}    // Here key's value will not be used
      undefined
      > obj     // Inappropriate, which we don't want
      { key: 'Rishikesh Agrawani' }
      >
      > // Let's fix
      undefined
      > var obj2 = {[key]: "Rishikesh Agrawani"}
      undefined
      > obj2
      { fullName: 'Rishikesh Agrawani' }
      >
      

      【讨论】:

        【解决方案3】:
        const animalSounds = {cat: 'meow', dog: 'bark'};
        
        const animal = 'lion';
        
        const sound = 'roar';
        
        {...animalSounds, [animal]: sound};
        

        结果是

        {cat: 'meow', dog: 'bark', lion: 'roar'};
        
        

        【讨论】:

          【解决方案4】:

          此外,当我们在评估或运行时之前还不知道它会是什么时,使用[] 表示法访问或分配对象中的内容的唯一条件。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2015-09-08
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多