浅复制与深复制

浅复制与深复制


栗子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

以上为深复制。将原数组中的每一个元素都复制一份到新数组中。

你可能感兴趣的:(浅复制与深复制)