如何在JavaScript中进行深拷贝

如何在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>
HTML

输出:

student 1 name is Rakesh
student 2 name is  Rakesh
HTML

示例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>
HTML

输出:

student 1 name is Rakesh
student 2 name is  Manish
HTML

示例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>
HTML

输出:

student 1 name is Rakesh
student 2 name is  Manish
HTML

示例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>
HTML

输出:

student 1 name is Rakesh
student 2 name is  Manish
HTML

结论: 我们可以使用所有这些方法来确保数据安全,在更改一个对象时不会发生变异。

阅读更多:JavaScript 教程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册