js深拷贝

2021-03-31 16:25

阅读:780

标签:for   bsp   dex   exp   元素   并且   size   fun   深拷贝   

getType 函数获取函数类型

首先我们要实现一个getType函数对元素进行类型判断,直接调用Object.prototype.toString 方法。

 

function getType(obj){
       //tostring会返回对应不同的标签的构造函数
       const toString = Object.prototype.toString;
       const 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)];
   }

 

深拷贝(deepCopy)


对于一个引用类型,如果直接将它赋值给另一个变量,由于这两个引用指向同一个地址,这时改变其中任何一个引用,另一个都会受到影响。当我们想复制一个对象并且切断与这个对象的联系,就要使用深拷贝。对于一个对象来说,由于可能有多层结构,所以我们可以使用递归来解决这个问题

  

function deepCopy (data) {
  let type = getType(data),
  o;
  if (type === ‘array‘) {
    o = [];
  } else if (type === ‘object‘) {
    o = {};
  } else {
    return data;
  }
  if (type === ‘array‘) {
    for (let index = 0; index 

  

  

js深拷贝

标签:for   bsp   dex   exp   元素   并且   size   fun   深拷贝   

原文地址:https://www.cnblogs.com/liuabo/p/12583172.html


评论


亲,登录后才可以留言!