对象深拷贝
- 第一种:使用递归的方法实现深拷贝
function deepClone(target) {
let objClone = Array.isArray(target) ? [] : {}
if(target && typeof target === 'Ojbect') {
for(let key in target) {
if(target[key] && typeof target[key] === 'Object') {
objClone[key] = deepClone(target[key])
} else {
objClone[key] = target[key]
}
}
}
return objClone
}
-
第二种:使用JSON.parse()和JSON.stringify()
JSON.parse(JSON.stringify(obj))
-
第三种:使用Object.assign()
Object.assign({},obj)
注意:只能深拷贝对象的一级属性,二级属性之后即为浅拷贝
数组的深拷贝
-
第一种:concat(arr1,arr2)
-
第二种:slice(idx1,idx2)
①没有参数的时候,是拷贝数组
②一个参数的时候,拷贝从起始位置到数组末尾的元素
③两个参数的时候,拷贝从起始位置到 结束位置的元素(不包含结束位置的元素,含头不含尾)
网友评论