谈一谈个人对js浅克隆和深克隆的区别。
之前也看到很多博客在写,当然也有写的非常好的,但是个人觉得既然要分享就不要写的太深奥,尽量以简单易懂为主。
浅克隆其实就是 对象A = 对象B;如果改变了对象B里面的属性和方法会同时改变对象A里面的方法,反之对象A改变同样会影响对象B。A和B对象指向的是同一个引用地址。
深克隆可以理解为继承的一种方式,对象A 赋值给对象B,但是对象B改变了属性和方法不会影响到对象A。A和B对象指向的不是同一个引用地址。
<script> // 浅克隆 var a = {"name": "张三"}; var b = a; b.name = "李四"; console.log(a.name); //李四 console.log(b.name); //李四 a.age = 18; console.log(a.age); // 18 console.log(b.age); // 18 console.log(a === b); //true // 深克隆 var c = {}; for (var i in a) { c[i] = a[i]; }; console.log(c); console.log(a === c); //false c.age = 20; console.log(a.age); // 18 console.log(c.age); // 20 console.log(a === c); //false </script>