17、深拷贝
深拷贝与浅拷贝最大的不同就是对象的属性是嵌套对象,会新建一个对象
步骤:
- 判断是否为对象
- 判断是否为i数组或者对象,给新的有个容器
- 遍历循环,如果是对象要遍历循环,采用递归
function deepCopy(obj){// 判断是否为对象if(!obj || typeof obj !== 'object'){return obj;}// 判断是否为数组或者是都西昂newCopy = Array.isArray(obj) ? [] : {};// 进行遍历,如果是对象的话重新使用deep函数for(let key in obj){if(obj.hasOwnProperty(key)){newCopy[key] = typeof key === 'object' ? deepCopy(obj[key]) : obj[key];}}return newCopy;}