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

Unusual syntax to create object method from a single item string array

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

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;

还有一个shorthand函数:

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"

所以变化不大。