从单个项目字符串数组创建对象方法的异常语法

tar*_*lah 2 javascript ecmascript-6 redux-actions

我来越过这个redux-actions教程,我注意到一个不寻常的语法来创建一个对象方法:

const stringArray = ["STRING_ARRAY"];

const strangeObject = {
  [stringArray]() {
    console.log(stringArray);
  }
};
Run Code Online (Sandbox Code Playgroud)

有人可以命名或解释正在使用的语法功能吗?

Axn*_*yff 10

这是两个功能的混合ES6.

您可以在对象中具有计算属性:

const b = "foo";
const a = {
    [b]: true
};

// same as
const a = {};
a[b] = true;
Run Code Online (Sandbox Code Playgroud)

还有一个功能的简写:

const a = {
    b() { console.log("foo");}
};

// same as
const a = {
    b: function() { console.log("foo");}
};
Run Code Online (Sandbox Code Playgroud)

如果你混合使用两者,你​​得到的就是你的名字:一个名字是计算值的方法.在这里你的对象将是相同的

const strangeObject = {
    STRING_ARRAY: function() {
        console.log("STRING_ARRAY");
    }
};
Run Code Online (Sandbox Code Playgroud)

只要对象的计算值不是字符串(如您的情况),它就会转换为字符串.

在你的情况下

["STRING_ARRAY"].toString() === "STRING_ARRAY"
Run Code Online (Sandbox Code Playgroud)

所以它没有太大变化.

  • 它是`["STRING_ARRAY"].toString()==="STRING_ARRAY"` (2认同)