深拷贝

2022-09-19  本文已影响0人  扶得一人醉如苏沐晨

 封装一个判断数据类型的工具

export const getObjType = (obj) => {

  var toString = Object.prototype.toString;

  var map = {

    "[object Boolean]": "boolean",

    "[object Number]": "number",

    "[object String]": "string",

    "[object Function]": "function",

    "[object Array]": "array",

    "[object Date]": "date",

    "[object RegExp]": "regExp",

    "[object Undefined]": "undefined",

    "[object Null]": "null",

    "[object Object]": "object",

  };

  if (obj instanceof Element) {

    return "element";

  }

  return map[toString.call(obj)];

};

/**

 * 对象深拷贝

 */

export const deepClone = (data) => {

  // 封装的判断数据类型的方法

  var type = getObjType(data);

  var obj;

  if (type === "array") {

    obj = [];

  } else if (type === "object") {

    obj = {};

  } else {

    // 不再具有下一层次

    return data;

  }

  if (type === "array") {

    for (var i = 0, len = data.length; i < len; i++) {

      obj.push(deepClone(data[i]));

    }

  } else if (type === "object") {

    for (var key in data) {

      obj[key] = deepClone(data[key]);

    }

  }

  return obj;

};

上一篇下一篇

猜你喜欢

热点阅读