http://blog.csdn.net/i10630226/article/details/52431562
在javascript中,对象都是值引用,也就是说,如果你常规的使用 "=" 来获取一个对象并且赋值给新的对象后,当你对这个新对象进行篡改后,原始对象也会随着改变。如下:
var old = {foo : ["a","b","c"]}; var _new = old; console.log(_new.foo); // ["a", "b", "c"] _new.foo.unshift("d"); // 4 console.log(old.foo); // ["d", "a", "b", "c"]
所以想要拷贝一个对象不是件容易的事。
方法1 : 递归拷贝
function deepCopy(p, c) { var c = c || {}; for (var i in p) { if (typeof p[i] === 'object') { c[i] = (p[i].constructor === Array) ? [] : {}; deepCopy(p[i], c[i]); } else { c[i] = p[i]; } } return c; }
方法2 :jQuery 中$.extend()
$.extend( true, {}, [object] );