js实现浅拷贝和深拷贝

实现浅拷贝和深拷贝

1. 浅拷贝和深拷贝的区别

      简单点说,浅拷贝拷贝完后,修改拷贝的内容可能会对源内容产生影响。而深拷贝就是拷贝前后的内容相互不影响。

那为什么拷贝前后的内容会相互影响呢?

那就得知道基本类型和引用类型的区别了。

  • 基本类型:自然不用说了,它的值就是一个数字,一个字符或一个布尔值。
  • 引用类型:是一个对象类型,值是什么呢?它的值是指向内存空间的引用,就是地址,所指向的内存中保存着变量所表示的一个值或一组值。

而在js中,有三大引用类型即Object、Array、Function。

因此在拷贝他们的时候,应该使用深拷贝来避免于源内容产生影响。

2.实现浅拷贝

3.实现深拷贝

3.1使用JSON

var arr = [1, [7, [9]], {a:'1'} , function(){}, null, undefined, NaN];
var result = JSON.parse(JSON.stringify(arr));
知识兔

 拷贝结果

[1, [7,[9]], {a:'1'}, null, null, null, null]
知识兔

所以可以看出,使用JSON不能实现对function、undefined、NaN的拷贝。

计算机