赞
踩
Object.assign方法用于对象的合并,将源对象(source)的所有可枚举属性,复制到目标对象(target)。
const target = { a: 1 };
const source1 = { b: 2 };
const source2 = { c: 3 };
Object.assign(target, source1, source2);
target // {a:1, b:2, c:3}
Object.assign方法的第一个参数是目标对象,后面的参数都是源对象。
这里主要是说这个方法的深浅复制
首先需要明确的是使用Object.assign方法生成的对象,是target对象,即函数的第一个参数,我们这样定义:
let a1 = { a: 1 }
let b1 = { b: 1 }
let newData = Object.assign(a1, b1)
此时,newData的值是a1(目标对象)的值,两者是完全一样的,修改a1 的值就是修改 newData的值,修改newData的值就是修改a1的值,这是浅复制,如果Object.assign只有一个参数let newData = Object.assign(a1)
,就是说方法中只有目标对象,目标对象和newData是浅复制,是相互影响的。
源对象(第二个以后的参数)改变是不会影响目标对象的,同样,目标对象改变也不会影响源对象,所以当我们想实现深复制的方式的两种方式:例如我们想深复制数据a 生成一个新对象newData
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。