js的浅克隆和深克隆

时间:2022-12-05 19:53:15

谈一谈个人对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>