Appearance
首层深拷贝
本节目标:理解“首层深拷贝”的核心思路,并能把它用于实际开发或面试表达。 一、数组:使用
concat和slice是实现数组的拷贝。但都只是对数组的第一层进行深拷贝。
二、对象:ES6的
Object.assgin方法和 ... 展开运算符实现拷贝。
...是对象第一层的深拷贝。Object.assign只是拷贝的引用值。
对目标对象的第一层进行深拷贝,然后后面的是浅拷贝。实现
function shallowClone(source) {
const targetObj = source.constructor === Array ? [] : {};
for (let keys in source) { // 遍历目标
if (source.hasOwnProperty(keys)) {
targetObj[keys] = source[keys];
}
}
return targetObj;
}