美文网首页
JavaScript(js)深复制的几种方法

JavaScript(js)深复制的几种方法

作者: 大兵_HERG | 来源:发表于2019-08-14 11:37 被阅读0次

    1.深复制deepClone

    function deepCloneFn (obj){
      var copy;
      // Handle the 3 simple types, and null or undefined
      if (null == obj || "object" != typeof obj) return obj;
    
      // Handle Date
      if (obj instanceof Date) {
        copy = new Date();
        copy.setTime(obj.getTime());
        return copy;
      }
    
      // Handle Array
      if (obj instanceof Array) {
        copy = [];
        for (var i = 0, len = obj.length; i < len; i++) {
          copy[i] = deepCloneFn(obj[i]);
        }
        return copy;
      }
    
      // Handle Object
      if (obj instanceof Object) {
        copy = {};
        for (var attr in obj) {
          if (obj.hasOwnProperty(attr)) copy[attr] = deepCloneFn(obj[attr]);
        }
        return copy;
      }
    
      throw new Error("Unable to copy obj! Its type isn't supported.");
    }
    

    2.比较简洁深复制

      let newObj = JSON.parse(JSON.stringify(obj))
    

    相关文章

      网友评论

          本文标题:JavaScript(js)深复制的几种方法

          本文链接:https://www.haomeiwen.com/subject/rvubjctx.html