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



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

const stringArray = ["STRING_ARRAY"];
const strangeObject = {
  [stringArray]() {
    console.log(stringArray);
  }
};

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

它是ES6的两个功能的混合体。

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

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

还有一个函数的简写:

const a = {
    b() { console.log("foo");}
};
// same as
const a = {
    b: function() { console.log("foo");}
};

如果将两者混合使用,则会得到您所拥有的:名称为计算值的方法。在这里,您的对象将与

const strangeObject = {
    STRING_ARRAY: function() {
        console.log("STRING_ARRAY");
    }
};

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

在您的情况下

["STRING_ARRAY"].toString() === "STRING_ARRAY"

所以它没有太大变化。

最新更新