对象深拷贝的实现
function deepCopy(obj) {
if (!obj && typeof obj !== 'object') {
return;
}
let newObj = Array.isArray(obj) ? [] : {};
for (let key in obj) {
if (obj.hasOwnProperty(key)) {
newObj[key] = typeof obj[key] === 'object' ? deepCopy(obj[key]) : obj[key];
}
}
return newObj;
}
for…in不仅会遍历对象本身的属性,而且还会遍历继承来的属性;因此,要使用{}.hasOwnProperty(key)来判断是否是对象自身的属性。