let obj = {
name:'tieniu',
age:18,
children:{
name:'jchao',
age:1
}
}
function deepClone(obj){
let newObj = {}
for(let item in obj){
if(typeof obj[item]!== 'object'){
newObj[item] = obj[item]
}else{
newObj[item] = deepClone(obj[item])
}
}
return newObj
}
let copyObj = deepClone(obj)
//验证深拷贝是否生效
copyObj.children.name = 'tieniu2'
console.log('测试',obj)
console.log('测试',copyObj)
知识点整理
- typeof语法
typeof是⼀个运算符,有2种使⽤⽅式:typeof(表达式)和typeof 变量名,第⼀种是对表达式做运算,第⼆种是对变量做运算。
typeof 运算符的返回类型为字符串,值包括如下⼏种:
1. ‘undefined’ --未定义的变量或值
2. ‘boolean’ --布尔类型的变量或值
3. ‘string’ --字符串类型的变量或值
4. ‘number’ --数字类型的变量或值
5. ‘object’ --对象类型的变量或值,或者null(这个是js历史遗留问题,将null作为object类型处理)
6. ‘function’ --函数类型的变量或值