一. 浅拷贝
1. for...in
var obj = {
name: '小明',
age: 18
}
var newObj = {}
for (var k in obj) {
newObj[k] = obj[k]
}
2. ... 展开运算符
var newObj = { ...obj }
3. Object.assign
var newObj = Object.assign({}, obj);
二. 深拷贝
1. JSON.stringify()
var obj = {
name: '小明',
age: 18,
hobby: ['唱歌', '打篮球', '练书法']
}
var newObj = JSON.parse(JSON.stringify(obj))
2. 递归
function deepCopy (newObj, obj) {
for (var k in obj) {
if (obj[k] instanceof Array) {
// 值为数组类型
newObj[k] = []
deepCopy(newObj[k], obj[k])
} else if (obj[k] instanceof Object) {
// 值为对象类型
newObj[k] = {}
deepCopy(newObj[k], obj[k])
} else {
// 值为普通类型
newObj[k] = obj[k]
}
}
}
var newObj = {}
deepCopy(newObj, obj)