在Javascript操作中,如果我们想要修改数组或者对象的值,会先将数组或对象的值进行备份,保留原来数组或对象的值不被修改,这个过程就可以使用Javascript中的深拷贝实现。Javascript中有深拷贝函数:concat函数和slice函数,本文将向大家介绍。
第一种:Javascript的concat函数
concat(arr1, arr2,....)
返回一个新的数组。该数组是通过把所有 arrayX 参数添加到 arrayObject 中生成的。如果要进行 concat() 操作的参数是数组,那么添加的是数组中的元素,而不是数组。
使用实例
var arr1 = ["1","2","3"];
var arr2 = arr1.concat();
arr2[1] = "9";
console.log("数组的原始值:" + arr1 );
console.log("数组的新值:" + arr2 );第二种:Javascript的slice函数
slice(index1, index2)
没有参数是拷贝数组
只有一个参数是从该位置起到结束拷贝数组元素
两个参数,拷贝从起始位置到结束位置的元素(不包含结束位置的元素:含头不含尾)
使用实例
var a = [1, 2, 3]
b = a.slice(0)
console.log("a: ",a)
console.log("b: ",b)
b[0] = 99;
console.log("---- after changed deepClone array b ----- ")
console.log("a: ",a)
console.log("b: ",b)concat函数和slice函数在修改数组时,不会修改原来的数组,而是返回一个新的数组。并且他们只能对Javascript数组中简单的数据类型进行深拷贝,要注意哦~更多js学习:js教程。



