1. 程式人生 > 其它 >定義一個深拷貝函式 接收目標target引數

定義一個深拷貝函式 接收目標target引數

平時的業務中經常用到深拷貝array或object,很少會拷貝函式的。最近有個專案用到所以分享給大家   const deepClone = (target) => {   // 定義一個變數   let result;   // 如果當前需要深拷貝的是一個物件的話   if (typeof target === 'object') {   // 如果是一個數組的話       if (Array.isArray(target)) {           result = []; // 將result賦值為一個數組,並且執行遍歷           for (let i in target) {               // 遞迴克隆陣列中的每一項               result.push(deepClone(target[i]))           }        // 判斷如果當前的值是null的話;直接賦值為null       } else if(target===null) {           result = null;        // 判斷如果當前的值是一個RegExp物件的話,直接賦值           } else if(target.constructor===RegExp){           result = target;       }else {        // 否則是普通物件,直接for in迴圈,遞迴賦值物件的所有值           result = {};           for (let i in target) {               result[i] = deepClone(target[i]);           }       }    // 如果不是物件的話,就是基本資料型別,那麼直接賦值   } else {       result = target;   }    // 返回最終結果   return result; }