题目
请补全JavaScript代码,要求实现对象参数的深拷贝并返回拷贝之后的新对象。
注意:
1. 参数对象和参数对象的每个数据项的数据类型范围仅在数组、普通对象({})、基本数据类型中]
2. 无需考虑循环引用问题
编辑
核心代码
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>简易深拷贝</title> </head> <body> <!-- 根据题目要求,实现对象参数的深拷贝并返回拷贝之后的新对象,因为参数对象和参数对象的每个数据项的数据类型范围仅在数组、 普通对象({})、基本数据类型中且无需考虑循环引用问题,所以不需要做过多的数据类型判断,核心步骤有: 如果对象参数的数据类型不为“object”或为“null”,则直接返回该参数 根据该参数的数据类型是否为数组创建新对象 遍历该对象参数,将每一项递归调用该函数本身的返回值赋给新对象 --> <script type="text/javascript"> const _sampleDeepClone = target => { if (typeof target === 'object' && target !== null) { const cloneTarget = Array.isArray(target) ? [] : {} for (prop in target) { if (target.hasOwnProperty(prop)) { cloneTarget[prop] = _sampleDeepClone(target[prop]) } } return cloneTarget } else { return target } } </script> </body> </html>
