基本用法
Object.assign
方法用于对象的合并,将源对象(source)的所有可枚举属性
,复制到目标对象(target)。
用法:Object.assign(target, source)
const target = { a: 1 };
const source1 = { b: 2 };
const source2 = { c: 3 };
Object.assign(target, source1, source2);
target // {a:1, b:2, c:3}
- 如果目标对象与源对象有同名属性,或多个源对象有同名属性,则后面的属性会
覆盖
前面的属性。
const target = { a: 1, b: 1 };
const source1 = { b: 2, c: 2 };
const source2 = { c: 3 };
Object.assign(target, source1, source2);
target // {a:1, b:2, c:3}
- 如果只有一个参数,
Object.assign
会直接返回该参数。
const obj = {a: 1};
Object.assign(obj) === obj // true
Object.assign()--浅拷贝 (只拷贝一层)
let obj = { name: 'lisa', age: 18, dept: { deptname: 'blackpink' } }
let copyObj = Object.assign({}, obj)
copyObj.name = 'luo'
copyObj.dept.deptname = 'pinkblack'
console.log(obj) //{ name: 'lisa', age: 18, dept: { deptname: 'pinkblack' } }
console.log(copyObj) // { name: 'luo', age: 18, dept: { deptname: 'pinkblack' } }
//对于第一层(基础类型),拷贝了值,对于引用类型拷贝了引用。
还有一些不常用的细节 可参考:www.jianshu.com/p/d5f572dd3…