vue中实现深拷贝的方法{简单}

1,102 阅读1分钟

1、使用json.parse(json.stringify())实现对简单数组或对象第一层的深拷贝;

JSON.parse(JSON.stringify())

示例:

computed: {  
     data: function () {  
         var obj={};  
         obj=JSON.parse(JSON.stringify(this.templateData)); //this.templateData是父组件传递的对象  
         return obj  
    }  
 }

2、手写一个递归方法,实现对数组或对象的深层拷贝

const clone = (obj) => {
  var o;
  // 如果  他是对象object的话  , 因为null,object,array  也是'object';
  if (typeof obj === 'object') {
    
    // 如果  他是空的话
    if (obj === null) {
      o = null;
    }
    else {
  
      // 如果  他是数组arr的话
      if (obj instanceof Array) {
        o = [];
        for (var i = 0, len = obj.length; i < len; i++) {
          o.push(clone(obj[ i ]));
        }
      }
      // 如果  他是对象object的话
      else {
        o = {};
        for (var j in obj) {
          o[ j ] = clone(obj[ j ]);
        }
      }
      
    }
  }
  else {
    o = obj;
  }
  return o;
};

export default clone;