JavaScript中如何有效地深拷贝一个对象()

JavaScript中如何有效地深拷贝一个对象?newObj = eval(uneval(o))在Firefox在可以实现拷贝一个对象,但是只有Firefox支持,newObj=JSON.parse(JSON.stringify(0))好像效率也不高,递归赋值函数也可以拷贝对象,但是有没有更规范的方式深拷贝一个对象?
jQuery中的clone()方法可以拷贝一个DOM元素,jQuery中的深拷贝比浅拷贝要好,可以避免很多缺陷和问题,使用方式如下:

// 浅拷贝 var newObject = jQuery.extend({}, oldObject); // 深拷贝 var newObject = jQuery.extend(true, {}, oldObject);

【JavaScript中如何有效地深拷贝一个对象()】但是使用:
JSON.parse(JSON.stringify(obj))

是拷贝或克隆对象最快的方法,比jQuery的克隆方法还快,jQuery的extend函数中,如果设置为false(浅拷贝)该函数则非常快,但是它包含了一些用于类型验证的逻辑,并且不会复制未定义的属性,这会使速度慢一些。自定义拷贝对象可以使用for循环,在遍历的时候使用hasOwnProperty函数检查进行克隆,注意JSON.parse()方法不会反悔Date对象。

    推荐阅读