数组深层拷贝利用了一个方法arr.concat()有点不太明白?mdn里面好像没有这个吧,不传参的形式数组:var arr = ["a", "b"];var arrCopy = arr;arrCopy[1] = "c";console.log(arr); //["a","c"];浅拷贝与深层的拷贝?上面的数组来说:发现对arrCopy继续拧拷贝时元数组也会进行响应的操作(变化),这就是JS的浅层拷贝, 即:对于数组、对象、对象数组进行简单复制只是创建了一份原内容的引用,指向的仍然是同一块内存区域,修改的时候会对应修改原有的内容,而有时候我们却不需要这种拷贝模式,即我么需要对原内容进行深层拷贝。数组的深层拷贝console.log("------");var arr = ["a", "b"];arrCopy = [];for (var key in arr) { arrCopy[key] = arr[key];}arrCopy[1] = "c";console.log(arr); //["a","b"]console.log(arrCopy); //["a","c"]数组深层次的拷贝方式2:slice()arrCopy = arr.slice(0);arrCopy[1] = "c";console.log(arr); //["a","b"]console.log(arrCopy); //["a","c"];数组深层拷贝方式三 concat();arrCopy = arr.concat(); //???arrCopy[1] = "c";console.log(arr); //["a","b"];console.log(arrCopy); //["a","c"];//?????
2 回答

www说
TA贡献1775条经验 获得超8个赞
concat()
方法用于合并两个或多个数组。此方法不会更改现有数组,而是返回一个新数组。
可以接受0个或多个参数,下面是摘自ECMAScript标准的一段话。
添加回答
举报
0/150
提交
取消