ES6的Object.assign()函数其实只能拷贝一层,所以需要手写一个深拷贝函数。
有个小技巧判断一个对象是否为数组,instanceof是否等于Array。
主要思路就是使用in方法遍历对象的每个key和值,用递归的方式拷贝到新的对象里面去
function deepClone(obj) { let newObj = obj instanceof Array ? [] : {} if (obj && typeof obj === "object") { for (let key in obj) { if (obj.hasOwnProperty(key)) { newObj[key] = (obj && typeof obj[key] === 'object') ? deepClone(obj[key]) : obj[key]; } } } return newObj }