2

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

const stringArray = ["STRING_ARRAY"];

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

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

4

1 回答 1

10

它混合了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"

所以变化不大。

于 2018-01-13T15:15:17.900 回答