JavaScript中对象前三点(...)语法含义咨询及文档查询
对象展开语法(Object Spread Syntax)详解
嘿,你遇到的这个三个点的语法叫做对象展开语法(Object Spread Syntax),是ES2018(ES9)新增的特性,专门用于对象字面量中快速拷贝、合并对象属性。
它在你的代码里的具体作用
看你这段代码:
this.someObject = {...Something.someObjectDefaultAsStaticMethod,...someThing};
这里的...是把Something.someObjectDefaultAsStaticMethod(静态方法返回的默认对象)和someThing(传入的对象)的所有可枚举属性,全部拷贝到一个新的空对象中,最终将这个合并后的新对象赋值给this.someObject。如果两个对象存在同名属性,后面的someThing里的属性会覆盖前面默认对象的属性——这也是它用来「设置默认配置 + 合并传入参数」的典型用法。
为什么之前搜索没找到准确结果?
你用的搜索词dots in parameter javascript不太精准,因为这个语法并非用在参数里(参数里的三个点是剩余参数语法,虽然外观一致但作用完全不同)。如果换用object spread syntax javascript或者javascript three dots object literal这类关键词,就能找到更匹配的官方说明啦。
补充:和Object.assign的对比
这个语法其实是Object.assign()的语法糖,你代码里的写法和下面这段代码效果几乎一致:
this.someObject = Object.assign({}, Something.someObjectDefaultAsStaticMethod, someThing);
但展开语法写起来更简洁直观,可读性也更强。
内容的提问来源于stack exchange,提问作者SomeStranger314
相关产品推荐
相关产品推荐

