从单个项目字符串数组创建对象方法的不寻常语法
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"
所以变化不大。
我遇到了这个 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"
所以变化不大。