/** *
data 判断数据类型 */ let checkType = (data) => { return Object.prototype.toString.call(data).slice(8, -1) } // 拷贝原对象并返回一个值 let deepClone = (target) => { let result //初始值 let targetType = checkType(target)//判断数据类型 if (targetType === ‘Object’) { result = {} } else if (targetType === ‘Array’) { result = [] } else { result = target } // 循环遍历取出值并放回初始值 for (let i in target) { let value = target[i] let valueType = value//再次判断对象类型(有可能对象里面嵌套对象) if (valueType === ‘Object’ || valueType === ‘Array’) { result[i] = deepClone(value)//调用函数本身(递归) } else { result[i] = value } } return result }