什么是深拷贝、浅拷贝
时间: 2024-06-16 10:04:23 浏览: 139
08_26_C++ 深浅拷贝的区别
深拷贝和浅拷贝是对象拷贝的两种方式。
浅拷贝是指创建一个新对象,新对象的属性值是原对象的引用。也就是说,新对象和原对象共享同一块内存地址,修改其中一个对象的属性值会影响到另一个对象。浅拷贝可以通过赋值操作符(=)或者Object.assign()方法来实现。
深拷贝是指创建一个新对象,新对象的属性值是原对象属性值的副本。也就是说,新对象和原对象拥有不同的内存地址,修改其中一个对象的属性值不会影响到另一个对象。深拷贝可以通过JSON.parse(JSON.stringify())方法来实现。
深拷贝的优点是完全独立于原对象,修改新对象不会影响原对象。但是深拷贝的缺点是无法复制函数和原型链。
浅拷贝的优点是简单快捷,可以复制函数和原型链。但是浅拷贝的缺点是修改新对象会影响原对象。
范例:<<引用:var a = {name: 'John', age: 25}; var b = Object.assign({}, a); b.name = 'Tom'; console.log(a); // 输出:{name: 'John', age: 25} console.log(b); // 输出:{name: 'Tom', age: 25}[^1]。引用:var a = {name: 'John', age: 25}; var b = JSON.parse(JSON.stringify(a)); b.name = 'Tom'; console.log(a); // 输出:{name: 'John', age: 25} console.log(b); // 输出:{name: 'Tom', age: 25}[^2]。
阅读全文