var a=[name:'zs']; var str=Json.stringify(a); var b=Json.parse(str);//这里是将一个新对象赋值给b。与a没有引用同一个对象 b.name='ls'; alert(a.name);//zs //即使a的name的值又是一个对象,用这种方法也不会出现引用问题 var a=[name:{age:100}]; var str=Json.stringify(a); var b=Json.parse(str);//这里是将一个新对象赋值给b。与a没有引用同一个对象 b.name.age=200; alert(a.name.age);//100
要是拷贝的对象中再有对象,还可以使用递归进行深拷贝。这样拷贝的对象之间就不会有关联
如:
function Copy(p, c) {var c = c || {}; for (var i in p) { if (typeof p[i] === 'object') { c[i] = (p[i].constructor === Array) ? [] : {}; Copy(p[i], c[i]); } else { c[i] = p[i]; } } return c; } a.key2 = ['小辉','小辉']; var b={}; b = Copy(a,b); b.key2.push("大辉"); alert(b.key2); //小辉,小辉,大辉 alert(a.key2); //小辉,小辉