深拷贝

作者: 扶得一人醉如苏沐晨 | 来源:发表于2022-09-19 09:17 被阅读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;

    };

    相关文章

      网友评论

          本文标题:深拷贝

          本文链接:https://www.haomeiwen.com/subject/gwkeortx.html