JavaScript 如何进行深拷贝

JavaScript 如何进行深拷贝

一般情况下,克隆指的是将一个值复制到另一个值。在JavaScript中,我们用JavaScript进行克隆,即将一个值复制到另一个值。更准确地说,JavaScript中有两种类型的克隆。作为程序员,无论是初学者还是老手,都应该能够了解深拷贝和浅拷贝之间的区别。由于本文是关于深拷贝的,我们将详细研究深拷贝。克隆是一个可以发生在任何数据类型上的概念,例如原始数据类型(如字符串和数字)或复合数据类型,如数组和JavaScript对象。因此,为了掌握它,我们需要对基础知识有清晰的理解。

深克隆: 深克隆是一种技术,用于在JavaScript中克隆数组和对象时,复制所有内容以避免数据丢失。

在JavaScript中有三种深克隆的方法:

  • 使用扩展运算符
  • 使用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

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

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程