本来对js的深浅拷贝不是很理解,但是昨天经过踩坑之后才终于明白是怎么个事儿
js复制数组:
var a = [1,2,3];
var b = [];
b= a ;
这样b就和a一样了,但是,如果修改b的数据,数组a的数据也会发生改变,因为在js中,这种简单的赋值会把两个函数指向同一个内存地址,(php则不同,但是php也存在对象的深浅拷贝),所以,如果想修改一个数组而不影响原来的数组,那么就要进行数组的深拷贝
我用的是jQ的$.extend()方法,既可以深拷贝,也可以浅拷贝,关键在于第一个参数的值。第一个参数默认是FALSE,也就是浅拷贝,所以,在深拷贝的时候,要改成TRUE,第二个参数是要拷贝的对象,第三个是原有的对象。