数据类型:
简单数据类型:Number,String,Boolean,Undefined,Null
复杂数据类型:Object(对象,Array)
深拷贝和浅拷贝:
浅拷贝:拷贝后不会生成新的数据,而是拷贝引用,修改拷贝后的数据会影响原数据
深拷贝:拷贝数据后会生成一份新的数据,修改拷贝后的数据不会影响原数据
浅拷贝方法:
1.直接赋值
2.Object.assign()
3.Array.prototype.concat()
4.Array.prototype.slice()
深拷贝方法:
JSON.parse(JSON.stringify()),局限性:不能处理拷贝的数据中的函数
数据类型检测的方法:
1.typeof
返回数据类型的字符串:"number","string","boolean","undefined","function","object"
局限性:对象,数组和空类型都返回Object
2.instanceof
A instanceof B 判断A是否是B的实例,返回ture/false
3.Object.prototype.toString.call(检测对象).slice(8,-1)
检测Null:
检测数组:
检测对象:
检测函数:
for...in循环数组和对象 :
循环对象输出的i为key值:
循环数组输出的i为下标:
用代码实现一个深拷贝:
1.封装类型检测函数:
2.封装克隆函数
经过检查,实现了一个深拷贝