浅复制与深复制
栗子1:
var nums = [];
for (var i = 0; i < 100; ++ i) {
nums[i] = i+1;
}
var samenums = nums;
nums[0] = 400;
console.log(samenums[0]); // 显示400
以上为浅复制。当把一个数组赋给另一个数组时,只是为被赋值的数组增加一个新的引用,新数组依然指向原来的数组。
栗子2:
function copy(arr1, arr2) {
for(var i = 0; i < arr1.length; ++i) {
arr2[i] = arr1[i];
}
}
var nums = [];
for (var i = 0; i < 100; ++i) {
nums[i] = i+1;
}
var samenums = [];
copy(nums, samenums);
nums[0] = 400;
console.log(samenums[0]); // 显示 1
以上为深复制。将原数组中的每一个元素都复制一份到新数组中。
网友评论