javascript 中对象的拷贝

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] );

 

posted @ 2017-02-27 20:53  贝尔塔猫  阅读(203)  评论(0编辑  收藏  举报