Object.assign()的用途和原理

分类:知识百科 日期: 点击:0

Object.assign()是ES6中新增的一个API,它的作用是用来实现对象的浅拷贝,把源对象(source)的所有可枚举属性,复制到目标对象(target)中。

使用方法

Object.assign()接收两个及以上参数,第一个参数是目标对象,后面的参数都是源对象。

const target = { a: 1 };
const source1 = { b: 2 };
const source2 = { c: 3 };

Object.assign(target, source1, source2);
console.log(target); // { a: 1, b: 2, c: 3 }

Object.assign()会把源对象的所有可枚举属性,复制到目标对象中,如果目标对象中已经存在同名属性,则会被源对象中的属性覆盖。

const target = { a: 1, b: 1 };
const source1 = { b: 2, c: 2 };

Object.assign(target, source1);
console.log(target); // { a: 1, b: 2, c: 2 }

原理

Object.assign()的原理是,遍历源对象中的所有属性,如果属性是可枚举的,就把它复制到目标对象上,如果属性是不可枚举的,就跳过。

  • 1. 检查第一个参数是否是对象,如果不是,则抛出错误。
  • 2. 遍历源对象中的所有属性。
  • 3. 如果属性是可枚举的,则复制到目标对象上。
  • 4. 如果属性是不可枚举的,则跳过。
  • 5. 如果目标对象中已经存在同名属性,则会被源对象中的属性覆盖。

Object.assign()只能实现对象的浅拷贝,而不能实现深拷贝,如果源对象的属性值是对象,则复制的只是这个对象的引用,而不是实际的对象。

标签:

版权声明

1. 本站所有素材,仅限学习交流,仅展示部分内容,如需查看完整内容,请下载原文件。
2. 会员在本站下载的所有素材,只拥有使用权,著作权归原作者所有。
3. 所有素材,未经合法授权,请勿用于商业用途,会员不得以任何形式发布、传播、复制、转售该素材,否则一律封号处理。
4. 如果素材损害你的权益请联系客服QQ:77594475 处理。