如何在JavaScript中进行深拷贝
通常情况下,克隆意味着将一个值复制到另一个值。在JavaScript中,我们使用JavaScript进行克隆,即将一个值复制到另一个值。更确切地说,JavaScript中有两种类型的克隆。作为程序员,无论是初学者还是资深人士,都应该能够了解深拷贝和浅拷贝之间的区别。由于本文是关于深拷贝的,我们将详细学习深拷贝。克隆是一个可以发生在任何数据类型上的概念,即可能是原始数据类型(如字符串、数字)或复合数据类型,如数组和JavaScript对象。因此,为了掌握它,我们需要清楚基础知识。
深拷贝: 深拷贝是一种技术,在JavaScript中克隆数组和对象时,它用于复制所有内容,以避免数据丢失。
在Javascript中有三种方法进行深拷贝:
- 使用Spread运算符
- 使用Object.assign()方法
- 使用Json.parse()和Json.stringify()
示例1: 在这个示例中,如果我们更改一个对象的值,数据将变得不正确,这就是我们使用深拷贝来避免此问题的原因。
<script>
var student1 ={
name : "Manish",
company : "Gfg"
}
var student2 = student1 ;
student1.name = "Rakesh"
console.log("student 1 name is",student1.name)
console.log("student 2 name is ",student2.name);
</script>
输出:
student 1 name is Rakesh
student 2 name is Rakesh
示例2: 使用Spread运算符
<script>
var student1 ={
name : "Manish",
company : "Gfg"
}
var student2 = { ...student1 } ;
student1.name = "Rakesh"
console.log("student 1 name is",student1.name)
console.log("student 2 name is ",student2.name);
</script>
输出:
student 1 name is Rakesh
student 2 name is Manish
示例3: 使用Object.assign()
<script>
var student1 ={
name : "Manish",
company : "Gfg"
}
var student2 = Object.assign( {} ,student1) ;
student1.name = "Rakesh"
console.log("student 1 name is",student1.name)
console.log("student 2 name is ",student2.name);
</script>
输出:
student 1 name is Rakesh
student 2 name is Manish
示例4: 使用Json.parse和Json.stringify
<script>
var student1 ={
name : "Manish,
company : "Gfg"
}
var student2 = JSON.parse(JSON.stringify(student1))
student1.name = "Rakesh"
console.log("student 1 name is",student1.name)
console.log("student 2 name is ",student2.name);
</script>
输出:
student 1 name is Rakesh
student 2 name is Manish
结论: 我们可以使用所有这些方法来确保数据安全,在更改一个对象时不会发生变异。
阅读更多:JavaScript 教程
极客教程