淺拷貝 : 就是兩個js 對象指向同一塊內存地址,所以當obj1 ,obj2指向obj3的時候,一旦其中一個改變,其他的便會改變!
深拷貝:就是重新復制一塊內存,這樣就不會互相影響。
有些時候我們定義一個數組,把這個數據賦值給跟多對象數組中的一個字段,當我們改變對象數組中的該字段的時候,我們會把原來的數組也改變了,這樣就會引起其他數組對象中的對應的字段改變,這不是我們想要的。
這個時候我們會用到深拷貝。
方法:
//js 深拷貝方法
var deepCopy = function(source)
{
var result;
(source instanceof Array) ? (result = []) : (result = {});
for (var key in source) {
result[key] = (typeof source[key]==='object') ? deepCopy(source[key]) : source[key];
}
return result;
}
賦值之前調用這個方法即可。