js 浅拷贝 深拷贝
时间: 2023-08-16 08:17:10 浏览: 102
js中的深拷贝和浅拷贝总结
5星 · 资源好评率100%
浅拷贝和深拷贝是在 JavaScript 中用于复制对象的两种不同方式。
浅拷贝是创建一个新对象,然后将原始对象的属性值复制到新对象中。如果属性是基本类型(例如字符串、数字、布尔值等),那么它们的值会被复制。但是,如果属性是引用类型(例如数组、对象等),那么它们的引用会被复制,而不是创建一个新的副本。这意味着当修改原始对象的引用类型属性时,新对象中的对应属性也会受到影响。
深拷贝是创建一个完全独立于原始对象的新对象,原始对象及其所有嵌套对象的属性值都会被递归复制到新对象中。这样,即使修改原始对象的属性,新对象也不会受到影响。
在 JavaScript 中,可以使用以下方法进行浅拷贝和深拷贝:
1. 浅拷贝:
- 使用 Object.assign() 方法:`const newObj = Object.assign({}, obj);`
- 使用展开运算符(Spread Operator):`const newObj = { ...obj };`
2. 深拷贝:
- 使用 JSON.stringify() 和 JSON.parse() 方法:`const newObj = JSON.parse(JSON.stringify(obj));`
- 使用第三方库(如 lodash 的 cloneDeep 方法或 jQuery 的 extend 方法):`const newObj = _.cloneDeep(obj);`
需要注意的是,使用 JSON.stringify() 和 JSON.parse() 方法进行深拷贝时,原始对象中的函数、循环引用等特殊情况可能无法被正确复制。在这种情况下,使用第三方库通常更可靠。
阅读全文