js实现深拷贝

107 阅读1分钟
// 深拷贝对象
const recursionCopy = params => {
  let newParams = Array.isArray(params) ? [] : {};
  if (typeof params != 'object') {
    newParams = params;
    return newParams;
  }
  if (params instanceof Array) {
    // debugger;
    for (let i = 0; i < params.length; i++) {
      if (typeof params[i] == 'object') {
        newParams[i] = recursionCopy(params[i]);
      } else {
        newParams[i] = params[i];
      }
    }
  } else {
    for (let key in params) {
      if (Reflect.has(params, key)) {
        if (typeof params[key] == 'object') {
          newParams[key] = recursionCopy(params[key]);
        } else {
          newParams[key] = params[key];
        }
      }
    }
  }
  return newParams;
};