实现浅拷贝(shallowClone)


# 实现浅拷贝(shallowClone)

# 功能描述

浅克隆(shallowClone),只拷贝对象或数组的第一层内容。

注意:对于引用值时,浅克隆之后会出现你改我也改的情况。

# 手写实现

const shallowClone = (target) => {
  if (typeof target === 'object' && target !== null) {
    const cloneTarget = Array.isArray(target) ? [] : {};
    for (let prop in target) {
      if (target.hasOwnProperty(prop)) { // 遍历对象自身可枚举属性(不考虑继承属性和原型对象)
        cloneTarget[prop] = target[prop];
      }
    }
    return cloneTarget;
  } else {
    return target;
  }
}
1
2
3
4
5
6
7
8
9
10
11
12
13

# 测试用例

let oldObj = {
  name: 'old',
  params: {
    a: 1,
    b: 2
  }
}
let newObj = shallowClone(oldObj);
1
2
3
4
5
6
7
8

(完)