JavaScript 深拷贝与浅拷贝

168 阅读1分钟

深拷贝和浅拷贝只是针对Object和Array这样的引用数据类型的。

Array

// 1.slice()
let obj = [1, 2];
let copy = obj.slice(); // [1, 2]

// 2.conact()
let obj = [1, 2];
let copy = obj.concat() // [1, 2]

// 3. Es6 ...运算符
let obj = [1,2];
let copy = [...obj] // [1, 2]

// 4. JSON.parse()与JSON.stringify() 深拷贝
let obj = [{ name: 'wang', age: 22 }];
let copy = JSON.parse(JSON.stringify(obj)) // [{ name: 'wang', age: 22 }]

Object

// 1.Object.assign()
let obj = { name: 'wang', age: 22 };
let copy = Object.assing(obj) // { name: 'wang', age: 22 }

// 2. Es6 ...运算符
let obj = { name: 'wang', age: 22 };
let copy = [...obj] // { name: 'wang', age: 22 }

// 3. JSON.parse()与JSON.stringify() 深拷贝
let obj = [{ name: 'wang', age: 22 }];
let copy = JSON.parse(JSON.stringify(obj)) // [{ name: 'wang', age: 22 }]