deepClone/index.js

import cavar_type from "../cavar_type";

/**
 * 功能:深拷贝对象或数组-检测该属性是否为对象本身的属性(不能拷贝原型对象的属性)
 * @param {any} data - 目标对象
 * @returns {object|array} -深拷贝对象或数组
 */
const deepClone = (target) => {
    //检测数据的类型
    if (typeof target === 'object' && target !== null) {
      //创建一个容器
      const result = Array.isArray(target) ? [] : {};
      //遍历对象
      for (let key in target) {
        //检测该属性是否为对象本身的属性(不能拷贝原型对象的属性)
        if (target.hasOwnProperty(key)) {
          //拷贝
          result[key] = deepClone(target[key]);
        }
      }
      return result;
    } else {
      return target;
    }
  };
export default deepClone;