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

let z = {a:3,b:4};
let n = {...z};
console.log(n);//{a:3,b:4}

2、 由于数组是特殊的对象,所以对象的扩展运算符也可以用于数组

let foo = {...['a','b','c']}
console.log(foo);//{ '0': 'a', '1': 'b', '2': 'c' }

3、如果扩展运算符后面是一个空的对象,则没有任何效果

console.log({...{},a:1});//{a:1}

4、 如果扩展运算符后面是一个字符串,它会自动转成一个类数组对象,因此返回的不是空对象

console.log({...'hello'});//{ '0': 'h', '1': 'e', '2': 'l', '3': 'l', '4': 'o' }

5、如果扩展运算符后面不是对象,则会自动将其转为对象。由于该对象没有自身属性,所以返回一个空对象。

console.log({...1});//{}
console.log({...true});//{}
console.log({...undefined});//{}
console.log({...null});//{}

6、对象的扩展运算符等同于使用Object.assign()函数

let a = {name:'lisi',age:22
}
console.log({height:12,...a});//{ height: 12, name: 'lisi', age: 22 }
console.log(Object.assign({height:12},a));//{ height: 12, name: 'lisi', age: 22 }

7、 扩展运算符可以用于合并两个对象相当于Object.assign()函数

let a = {name:'lisi'}
let b = {age:23}
console.log({...a,...b});//{ name: 'lisi', age: 23 }
// 等同于
console.log(Object.assign({},a,b));//{ name: 'lisi', age: 23 }

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

let a = {x:3,y:4}
console.log({...a,x:1,y:2});//{ x: 1, y: 2 }
console.log({...a,...{x:1,y:2}});//{ x: 1, y: 2 }
let x = 1, y = 2
console.log({...a,x,y});//{ x: 1, y: 2 }
console.log(Object.assign({},a,{x:1,y:2}));//{ x: 1, y: 2 }

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

let a ={name:'lisi',age:12}
console.log({x:1,y:2,...a});//{ x: 1, y: 2, name: 'lisi', age: 12 }
console.log(Object.assign({},{x:1,y:2},a));//{ x: 1, y: 2, name: 'lisi', age: 12 }
console.log(Object.assign({x:1,y:2},a));//{ x: 1, y: 2, name: 'lisi', age: 12 }

10、对象的扩展运算符后面可以跟着表达式

const obj={...(8>1?{a:1}:{}),b:2
}
console.log(obj);//{a:1,b:2}

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

 let a = {get x() {//   throw new Error('not throw yet');console.log('hello');}}let aWithXGetter = { ...a }; // 报错

ES6对象的扩展运算符相关推荐

  1. es6 对象的扩展运算符

    对象的扩展运算符 <数组的扩展>一章中,已经介绍过扩展运算符(...). const [a, ...b] = [1, 2, 3]; a // 1 b // [2, 3] ES2017 将这 ...

  2. (...)ES6三点扩展运算符

    来源:https://www.cnblogs.com/rlann/p/7222150.html (...)ES6三点扩展运算符 扩展运算符将一个数组转为用逗号分隔的参数序列 console.log(. ...

  3. Vue的三个点es6知识,扩展运算符表达含义

    <!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8" ...

  4. ES6高级:扩展运算符,箭头函数,class类,iterator迭代器

    2. 扩展运算符 ... 2.1 reset参数 reset参数==必须放在最后==,为了替代arguments,在函数形参中使用,==接受剩余参数==,以==数组==的形式去接受 //1. rese ...

  5. ES6增加了扩展运算符: ... 三个点是ES几的

    ES6 的扩展运算符( spread )是三个点(...).它好比 rest 参数的逆运算,将一个数组转为用逗号分隔的参数序列. 1.将一个数组转为用逗号分隔的参数序列(把数组中元素展开). 如下: ...

  6. ES6中的扩展运算符

    扩展运算符(...)将一个数组转化为参数序列,通常与函数一起使用,show(...['judy','girl']). 数组合并:[...arr1,...arr2,...arr3] 字符串转字符数组:[ ...

  7. es6之三个点(...) 扩展运算符数组和对象的使用场景及最常见的用法(霸霸看了都说好)

    概念 es6之扩展运算符 (-) 简称三个点 数组的扩展运算符应用 复制数组 扩展运算符提供了复制数组的简便写法. const a1 = [1, 2]; // 写法一 const a2 = [...a ...

  8. ES6 数组、对象的扩展

    8. 数组的扩展 扩展运算符(...),将一个数组转为用逗号分隔的参数序列. 复制数组 const a2=[...a1] 合并数组 [...arr1, ...arr2, ...arr3]; arr1. ...

  9. es6 箭头函数 rest参数 扩展运算符

    Es6 箭头函数 语法: 普通函数: fn=function(){} 箭头函数: fn=()=>{} 特性: this是静态的,this始终指向函数声明时所在作用域下的this的值(使用call ...

最新文章

  1. 世界上最大的超级计算机,科学网—区块链(blockchain)如何能造出世界上最大的超级计算机? - 刘进平的博文...
  2. VC解决error C2065: 'timeGetTime' : undeclared identi
  3. Python PIL | Image.resize() 裁剪 缩放图片
  4. 线下活动 | 揭秘大数据背后的京东虚拟平台(免费报名中)
  5. java带参数的构造方法_看了Java的Class的源码,我自闭了
  6. Python二级笔记(17)
  7. C++ C# 中作用域限定符
  8. python求列表的平均值的用法_python如何求列表平均值?_后端开发
  9. Quartz2D简单绘制之矩形椭圆
  10. Leetcode744.Find Smallest Letter Greater Than Target寻找比目标字母大的最小字母
  11. python人脸照片分类_Python系列之三——人脸检测、人脸识别
  12. 天正网络版服务器填写位置,教你如何在天正里面输入坐标定位
  13. eyoucms使用入门 一
  14. win10忘记账户密码完美解决方案
  15. 飞饭网面试题 2014/9/2
  16. [渝粤教育] 中央财经大学 人力资源管理 参考 资料
  17. 缠中说禅《论语》详解:给所有曲解孔子的人
  18. Android MediaMuxer合成视频文件
  19. 2020年上海交通大学计算机软件学院夏令营面经
  20. android实现计算器功能吗,简单实现Android计算器功能

热门文章

  1. AI人工智能财税机器人真的能代替人吗
  2. MATLAB图像imshow函数显示问题、uint8与double类型转换、自定义图像显示函数
  3. 令人抓狂的ORA-01722: 无效数字
  4. Map集合中获取key-value值的方法
  5. UE4 修改分辨率及全屏窗口化
  6. [量化-031]金融哲学-道德经解读-002-道德经解读原则
  7. 阿里云轻量级GPU计算型实例规格族vgn5i配置性能详解
  8. FCRA考试答案100分
  9. BetaFlight统一硬件配置文件研读之feature命令
  10. tar解压到指定的目录