博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
扩展运算符(...) 合并 对象
阅读量:6475 次
发布时间:2019-06-23

本文共 1444 字,大约阅读时间需要 4 分钟。

扩展运算符(...)用于取出参数对象的所有可遍历属性,拷贝到当前对象之中。

let z = { a: 3, b: 4 };  let n = { ...z };  n // { a: 3, b: 4 }

这等同于使用Object.assign方法。

let aClone = { ...a };  //  等同于  let aClone = Object.assign({}, a);

扩展运算符可以用于合并两个对象。

let ab = { ...a, ...b };  //  等同于  let ab = Object.assign({}, a, b);

如果用户自定义的属性,放在扩展运算符后面,则扩展运算符内部的同名属性会被覆盖掉。

let aWithOverrides = { ...a, x: 1, y: 2 };  //  等同于  let aWithOverrides = { ...a, ...{ x: 1, y: 2 } };  //  等同于  let x = 1, y = 2, aWithOverrides = { ...a, x, y };  //  等同于  let aWithOverrides = Object.assign({}, a, { x: 1, y: 2 });

上面代码中,a对象的x属性和y属性,拷贝到新对象后会被覆盖掉。

这用来修改现有对象部分的部分属性就很方便了。

let newVersion = {      ...previousVersion,      name: 'New Name' // Override the name property  };

上面代码中,newVersion对象自定义了name属性,其他属性全部复制自previousVersion对象。

如果把自定义属性放在扩展运算符前面,就变成了设置新对象的默认属性值。

let aWithDefaults = { x: 1, y: 2, ...a };  //  等同于  let aWithDefaults = Object.assign({}, { x: 1, y: 2 }, a);  //  等同于  let aWithDefaults = Object.assign({ x: 1, y: 2 }, a);

扩展运算符的参数对象之中,如果有取值函数get,这个函数是会执行的。

//  并不会抛出错误,因为 x 属性只是被定义,但没执行  let aWithXGetter = {      ...a,      get x() {          throws new Error('not thrown yet');      }  };  //  会抛出错误,因为 x 属性被执行了  let runtimeError = {      ...a,      ...{          get x() {              throws new Error('thrown now');          }      }  }

如果扩展运算符的参数是null或undefined,这个两个值会被忽略,不会报错。

let emptyObject = { ...null, ...undefined }; //  不报错

.

 

转载于:https://www.cnblogs.com/crazycode2/p/9063497.html

你可能感兴趣的文章
ThinkPHP新建控制器
查看>>
ThinkPHP5.0框架开发--第7章 TP5.0数据库操作
查看>>
thinkphp5项目--个人博客(三)
查看>>
20145328《信息安全系统设计基础》第12周学习总结
查看>>
细说C语言的优先级和结合性
查看>>
C#的百度地图开发(三)依据坐标获取位置、商圈及周边信息
查看>>
常用网址
查看>>
ORACLE 本地冷迁移
查看>>
Java基础——数据结构总结
查看>>
THE DRUNK JAILER
查看>>
【AC自动机】hdu2222 Keywords Search
查看>>
buffer overflow
查看>>
opencv 矩阵操作
查看>>
菜鸟 ssm 框架的学习之路
查看>>
在Linux CentOS上编译并安装Clang 3.5.0
查看>>
《互联网时代》第一集·时代
查看>>
Centos 编译安装高版本Python方法
查看>>
andriod第四课----一些组件和文件介绍
查看>>
[转]Windows Server2008、IIS7启用CA认证及证书制作完整过程
查看>>
caffe笔记之例程学习(三)
查看>>