深拷贝和浅拷贝的区别
浅拷贝:
拷贝前后对象的基本数据类型互不影响,但拷贝前后对象的引用类型,会互相影响。
function deepClone(obj){
var cloneObj={}
for(var i in obj){
if(obj hasOwnProperty(i)){
cloneObj[i]=obj[i]
}
}
return cloneObj
}
深拷贝:
对对象中的子对象进行递归拷贝,拷贝前后的两个对象互不影响。
function deepClone(obj){
var cloneObj={}
if(obj===null) return obj;
if(obj instanceof Date) return new Date(obj)
if(obj instanceof RegExp) return new RegExp(obj)
if(typeof obj !=='object') return obj
for(var i in obj){
if(obj hasOwnProperty(i)){
cloneObj[i]=deepClone(obj[i])
}
}
return cloneObj
}