js的浅克隆和深克隆

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

  

原文地址:https://www.cnblogs.com/alvin553819/p/7985832.html