我的关注 |
¥0 在JavaScript中如何高效的深度克隆object?
0

在JavaScript中如何高效的深度克隆object?
我原来用obj=JSON.parse(JSON.stringify(o));,但是感觉不太正规。

佛法不二
修改
评论(0)
1个回答
0
采纳

jQuery中.clone方法只能克隆DOM element.
为了克隆JavaScript对象,你可以:

  1. // 浅度拷贝
  2. var newObject = jQuery.extend({}, oldObject);
  3. // 深度拷贝
  4. var newObject = jQuery.extend(true, {}, oldObject);

在jQuery源码里和很多基于Jquery插件里都使用了深度拷贝,效率很高。

虽然var newObject = JSON.parse(JSON.stringify(oldObject));可能快出10~20%,但是会存在很多问题,比如:

  1. JSON.stringify({key: undefined})得到的结果是“{}”
  2. 如果旧对象里有方法,则该方法无效。
    1. var o={};
    2. o.a=function a(){console.log('xx')};
    3. var b=JSON.stringify(o);
    4. console.log(b);
    输出:“{}”
采纳答案
大智若愚
修改
评论 (0)
撰写回答