实现深拷贝数据

封装一个常用方法 需要深拷贝的时候就引入这个方法把数据丢进去就好

/** 
* 深拷贝对象,可以正确序列化日期 
* * @param {*} obj 
* */
export const DEEP_CLONE = function (obj) {  
  let objClone = Array.isArray(obj) ? [] : {}  
  if (obj && typeof obj === 'object') {    
    for (let key in obj) {      
      if (obj.hasOwnProperty(key)) {        
        // 判断ojb子元素是否为对象,如果是,递归复制        
        if (obj[key] && typeof obj[key] === 'object') {          
          // 深拷贝日期类型          
          if (obj[key] instanceof Date) {            
            objClone[key] = new Date(obj[key].valueOf())            
            // console.log('deepClone', objClone[key])          
          } else {            
            objClone[key] = DEEP_CLONE(obj[key])          
          }        
        } else {          
          // 如果不是,简单复制          
         objClone[key] = obj[key]        
       }      
     }    
   } 
 }  
 return objClone
}

还有一个简单的方法就是
newData = JSON.parse(JSON.stringify(data))
局限性会有一些但是也挺长用的

你可能感兴趣的:(项目中遇到的问题,vue.js,javascript)