深拷贝和浅拷贝

数据类型:

简单数据类型: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.封装克隆函数

 经过检查,实现了一个深拷贝

原文地址:https://www.cnblogs.com/zxmonster/p/11982147.html