自己使用的深拷贝方法

 
// 深拷贝
function deepCopy (obj) {
  // 判断是基础数据类型 还是 引用数据类型  基础数据类型直接返回
  if (!isObject(obj)){
    return obj;
  };
  // 判断是否是日期类型  日期类型默认前延 8个小时  加上8个消失
  if(obj instanceof Date){
    return new Date(new Date(obj).valueOf() + (8 * 3600 * 1000));
  }
  // 判断是对象还是数组
  var result = Array.isArray(obj) ? [] : {};
  for (var key in obj) {
    if (obj.hasOwnProperty(key)) {
      if (isObject(obj[key])) {
        result[key] = deepCopy(obj[key]); //递归复制
      } else {
        result[key] = obj[key];
      }
    }
  }
  return result;
  function isObject (obj) {
    return typeof obj == 'object' && obj !== null;
  }
}
posted @ 2020-03-27 10:36  Mr_R  阅读(247)  评论(0编辑  收藏  举报