1.typeof 运算符
问题:typeof能判断哪些类型?
//所有的值类型
let a; typeof a //'underfined'
const str='long'; typeof str //'string'
const n=100; typeof n //'number'
const b=true; typeof b //'boolean'
const s=Symbol('s') typeof s //'symbol'
//函数
typeof console.log //'function'
typeof function(){} //'function'
//能识别引用类型(不能再继续识别)
typeof null //'object'
typeof ['a','b'] //'object'
typeof {x:100} //'object'
Node.js下载安装:https://nodejs.org/zh-cn/
2.深拷贝
/**
*
* 深拷贝
*/
const obj1={
age:20,
name:'xxx',
address:{
city:"changsha"
},
arr:['a','b','c']
}
//const obj2=obj1
const obj2=deepClone(obj1)
obj2.address.city='shanghai'
console.log(obj1.address.city)
/**
* 深拷贝
*/
function deepClone(obj ={}){
if(typeof obj!=='object'||obj==null){
//obj是null,或者不是对象和数组,直接返回
return obj
}
//初始化返回结果
let result;
if(obj instanceof Array){
result=[]
}else{
result={}
}
for(let key in obj){
//保证key非原型的属性
if(obj.hasOwnProperty(key)){
//递归调用(重要)
result[key]=deepClone(obj)
}
}
//返回结果
return result
}
可以试着尝试一下执行看看深拷贝