使用ES6,可以使用简写的方式来编写顶级属性。
randomFunction({
data: data
});
randomFunction({
data // no need for :data
});
有没有办法有这样的东西?
randomFunction({
data: {
a: data.a
}
});
randomFunction({
data.a
});
答案 0 :(得分:2)
简写对象文字语法假定属性名称与范围内变量的名称完全等效。
{a} // {a: a}
因此data.a
不是变量,因此无法完全按照您的建议行事。唯一的选择是
const {a} = data;
{a}
更一般地说,您正在寻找解构/挑选对象的能力,如
randomFunc(data PICK a)
但是,尽管已经提出了各种建议,但是没有这样的特征存在或计划好了。这是一个名为"扩展点符号",TC39上的权力已经完全没有兴趣:
randomFunc(data.{a})
还讨论了准确允许你提出的语法:
{ data.a } // {a: data.a}
但是这也没有任何牵引力,如果你对一个以上的房产感兴趣,无论如何都不是很干:
{ data.a, data.b } // requires repeating "data"