js的深复制与浅复制
什么是深复制和浅复制?
深复制和浅复制的概念只存在于对象array和数组obj上。
浅复制是:模糊复制,就是不管对方是字符串类型还是引用类型都通通复制过来。结果两个变量的内容会同时变化。
深复制是:有目的的复制,就是只希望复制变量存储的内容。
深复制方法:let b = JSON.parse(JSON.strigify( a ));
javascript值的类型有两种:字符串类型 和 引用类型
字符串类型的复制,值改变时不会影响到另一个变量,如:
let a=7; let b=a; a=6;
console.log(a) // a=6
console.log(b) //b=7
引用类型的复制,值改变时会影响到另一个变量。如:
let a={ name: 'xiaohong' }; let b=a; a.name=‘xiaowang;
console.log(a.name) // a='xiaowang'
console.log(b.name) //b='xiaowang'
因为数组和对象中存储的不是内容本身,而是存放内容的地址,所以数组和对象被复制给另一个变量时,该变量也指向了该地址。
当a.name变化时只是内容发生更改,地址并没有改变,所以指向同一地址的a。a.name和b.name都改变了。