# 深拷贝
# 原始类型
# Object.assign
Object.assign(dest, [src1, src2, src3...])
- 第一个参数
dest是指目标对象。 - 更后面的参数
src1, ..., srcN(可按需传递多个参数)是源对象。 - 该方法将所有源对象的属性拷贝到目标对象
dest中。换句话说,从第二个开始的所有参数的属性都被拷贝到第一个参数的对象中。 - 调用结果返回
dest。
# lodash _.clone
let src = { name: 'Kobe', address:{x:100,y:100}};
let dest = _.clone(src);
# 展开运算符...
let src = { name: 'Kobe', address:{x:100,y:100}};
let dest= {...src};
# Array.prototype.concat
let src = [1, 3, {
username: 'kobe'
}];
let dest = src.concat();
# Array.prototype.slice
let src = [1, 3, {
username: 'kobe'
}];
let dest = src.slice();
# 深层克隆
# JSON
- 不能处理函数和正则
let src = [1, 3, {
username: ' kobe'
}];
let dest = JSON.parse(JSON.stringify(src));
# lodash _.cloneDeep
let src = {
a: 1,
b: { f: { g: 1 } },
c: [1, 2, 3]
};
let dest = _.cloneDeep(src);
# jQuery.extend
let src = {
a: 1,
b: { f: { g: 1 } },
c: [1, 2, 3]
};
let dest = $.extend(true, {}, src);