概念
数据结构分成基本数据类型和引用数据类型。浅拷贝和深拷贝就是在这个基础上引入的概念。如果拷贝一个对象时,对基本数据类型进行值拷贝,对引用数据类型进行引用的传递,则认为是浅拷贝。反之,如果对一个对象进行完全的复制,则称为深拷贝。
浅拷贝实例
在JavaScript中可以通过Object.assign实现浅拷贝。
深拷贝实例
// 简单手写深拷贝函数
function deepClone(obj){
if(obj == null){
return null
}
if(obj instanceof RegExp){
return new RegExp(obj)
}
if(obj instanceof Date){
return new Date(obj)
}
var objClone = Array.isArray(obj) ? [] : {}
for(let key in obj){
if(obj.hasOwnProperty(key)){
//如果还是对象,就递归
if(obj[key] && typeof obj[key] === "object"){
objClone[key] = deepClone(obj[key])
}else{
objClone[key] = obj[key]
}
}
}
return objClone
}