[Javascript]深度复制Object(DeepClone)各种方法总结

2021-02-04 1232点热度 0人点赞 0条评论

JS开发时,有时候希望复制了一个Object后,新复制的Object不会随着老对象的属性修改而跟着修改,所以我们需要深度复制这个Object(DeepClone)

下面我整理并记录下Javasript下深度复制object的各种方法

代码中提及到的originalObject就是待复制的老的Object,比如var originalObject = {'name': 'Tom', 'age': 8}clonedObject就是复制好的Object

  1. 我最常用的,最简便的
    var clonedObject = JSON.parse(JSON.stringify(originalObject));

    利用Json转成文本,再转回JsonObject

  2. ES6提供的原生方法
    var clonedObject = Object.assign({}, originalObject);
  3. 兼容老的浏览器,自己写复制的方法
    function cloneObject(obj) {
        var clone = {};
        for(var i in obj) {
            if(obj[i] != null &&  typeof(obj[i]) == "object")
                clone[i] = cloneObject(obj[i]);
            else
                clone[i] = obj[i];
        }
        return clone;
    }
    var clonedObject = cloneObject(originalObject);
  4.  
    引入lodash
    var clonedObject = _.cloneDeep(originalObject);
  5. 使用jQuery的情况下
    var clonedObject = jQuery.extend(true, {}, originalObject);

     

  6. 使用angular
    var clonedObject = angular.copy(originalObject);

     

admin

这个人很懒,什么都没留下

文章评论

您需要 登录 之后才可以评论