js有六种数据类型:五种基本数据类型:
String、Number、Boolean、Undefined、Null 和一种复杂数据类型
(Object)。typeof 返回的数据类型:
String、Number、Boolean、Undefined、Object、Function //1.定义检测数据类型的功能函数 function checkType(target) { return Object.prototype.toString.call(target).slice(8, -1); } //2.实现深度克隆 function clone(target) { let result; let targetType = checkType(target); if (targetType === 'Object') { result = {}; } else if (targetType === 'Array') { result = []; }else { return target; } //3.遍历目标数据 for (let i in target) { let value = target[i]; //4.判断目标结构里的每一值是否存在对象/数组 if(checkType(value) === 'Object'||checkType(value) === 'Array'){ //对象或者数组里嵌套了对象或者数组 //5.继续遍历获取到的value值 result[i] = clone(value); }else { result[i] = value; } } return result;; } let arr3 = [1,2,3,{ userName:'xsx', age:18, wife:['wife1','wife2','wife3'], success:function () { console.log('okok') } }] let arr4 = clone(arr3); arr4[3].userName = 'LY'; console.log(arr3); console.log(arr4);
效果: