实现浅拷贝和深拷贝
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的拷贝。