21 Object.assign和扩展运算符

 Object.assign()

let outObj={
    inObj:{a:1,b:2}
}
let newObj=Object.assign({},outObj)
newObj.inObj.a=2
console.log(outObj.inObj.a)//2

说明Object.assign()是浅拷贝

扩展运算符

let outObj={
    inObj:{a:1,b:2}
}
let newObj={...outObj}
newObj.inObj.a=2
console.log(outObj.inObj.a)//2

说明扩展运算符也是浅拷贝

  • Object.assign()方法接收的第一个参数作为目标对象,后面的所有参数作为源对象。然后把所有的源对象合并到目标对象中。它会修改了一个对象,因此会触发 ES6 setter
  • 扩展操作符(…)使用它时,数组或对象中的每一个值都会被拷贝到一个新的数组或对象中。它不复制继承的属性或类的属性,但是它会复制ES6的 symbols 属性。不会触发setter

版权声明:本文为weixin_50464014原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。