數(shù)組和對象都是引用類型,因此有深、淺拷貝之分,數(shù)組深拷貝可參考https://blog.csdn.net/fungleo/article/details/54931379
提醒一下的是數(shù)組中如果還有其他引用類型的數(shù)據(jù),則需要遞歸深拷貝,否則修改數(shù)組中的引用類型還是會影響原數(shù)組中的引用類型,比如
var a = [{id:1}];
var b = a.slice(0);
b.id = 0;
console.log(a) // [{id:0}]
可采用以下深拷貝的方法
function objDeepCopy(source) {
var sourceCopy = source instanceof Array ? [] : {};
for (var item in source) {
sourceCopy[item] =
typeof source[item] === "object"
? objDeepCopy(source[item])
: source[item];
}
return sourceCopy;
}
jquery可采用$.extend實現(xiàn)深拷貝 ,用法文檔為http://www.runoob.com/jquery/misc-extend.html,比如深拷貝a到b
b = $.extend(true, [], a)