是否有编写嵌套属性的简写方法?

时间:2017-05-13 02:07:13

标签: javascript ecmascript-6

使用ES6,可以使用简写的方式来编写顶级属性。

randomFunction({
    data: data
});

randomFunction({
    data // no need for :data
});

有没有办法有这样的东西?

randomFunction({
    data: {
        a: data.a
    }
});
randomFunction({
    data.a
});

1 个答案:

答案 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"