Js中的深拷贝和浅拷贝

JS中的浅拷贝和深拷贝

JS中的数据类型

基本类型

  1. string

  2. number

  3. boolean

  4. null

  5. undefined

  6. symbol

引用类型

指那些可能由多个值构成的对象,只有一种如下:object。 在将一个值赋给变量时,解析器必须确定这个值是基本类型值还是引用类型值。

 

JS中的变量存储方式

栈(stack)

自动分配内存空间,系统自动释放,里面存放的是基本类型的值和引用类型的地址

堆(heap)

动态分配的内存,大小不定,也不会自动释放。里面存放引用类型的值。

 

基本数据类型是按值访问的,因为可以操作保存在变量中的实际的值。 引用类型的值是保存在内存中的对象。JavaScript 不允许直接访问内存中的位置,也就是说不能直接操作对象的内存空间。 在操作对象时, 实际上是在操作对象的引用而不是实际的对象。

 

基本类型与引用类型最大的区别实际就是 传值与传址 的区别

值传递:基本类型采用的是值传递。 地址传递:引用类型则是地址传递,将存放在栈内存中的地址赋值给接收的变量。

 

浅拷贝

被复制对象的所有变量都含有与原来的对象相同的值,而所有的对其他对象的引用仍然指向原来的对象。即对象的浅拷贝会对“主”对象进行拷贝,但不会复制主对象里面的对象。”里面的对象“会在原来的对象和它的副本之间共享。

 

 

深拷贝

深拷贝不仅将原对象的各个属性逐个复制出去,而且将原对象各个属性所包含的对象也依次采用深复制的方法递归复制到新对象上,所以对一个对象的修改并不会影响另一个对象。

posted @ 2021-03-31 15:51  木木彡坚持  阅读(147)  评论(0)    收藏  举报