10
09/2014
javascipt clone array
a=[1,2,3,4,5,6] b=a b.shift() console.log(a,b) a===b //true
这时,a 和 b 都变成 [2,3,4,5,6] 了。
用 slice 方法
a=[1,2,3,4,5,6] b=a.slice() b.shift() console.log(a,b)
slice 不可靠!
a=[[1],[2],[3],[4]] b=a.slice() b.shift().shift() console.log(a,b)
原因: b[0][0] 包含了一个指向 a[0][0] 的指针! 似乎所有语言都有这个问题,节约内存使用。jQuery’s extend 可以用来完成一个 “深度” 拷贝。
a=[[1],[2],[3],[4]] b = $.extend(true, [], a); b.shift().shift() console.log(a,b)