我越过这个redux-actions tutorial,我注意到一种不寻常的语法来创建一个对象方法:
const stringArray = ["STRING_ARRAY"];
const strangeObject = {
[stringArray]() {
console.log(stringArray);
}
};
有人可以命名或解释正在使用的语法功能吗?
答案 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"
因此它没有太大变化。