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

时间:2018-01-13 15:11:33

标签: javascript ecmascript-6 redux-actions

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

const stringArray = ["STRING_ARRAY"];

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

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

1 个答案:

答案 0 :(得分: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"

因此它没有太大变化。