# 深拷贝

# 原始类型

# 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);