實現深拷貝數據

封裝一個常用方法 需要深拷貝的時候就引入這個方法把數據丟進去就好

/** 
* 深拷貝對象,可以正確序列化日期 
* * @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))
侷限性會有一些但是也挺長用的

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章