先看一个例子:
var a={name:[],list:[]};var list2=[1,3];a.name= list2;a.list= list2;a.list[1]=4;console.log(a.name);
本以为会输出[1,3],实际上输出[1,4],因为name和list都指向了list2的地址:
解决方案:
var a={name:[],list:[]};var list2=[1,3];a.name= $.extend(true,{},list2);a.list= $.extend(true,{},list2);a.list[1]=4;console.log(a.name);
或者:
var a={name:[],list:[]};var list2=[1,3];a.name= list2.concat();a.list= list2.concat();a.list[1]=4;console.log(a.name);
concat()表示连接数组,里面可以加值