简单点说,浅拷贝拷贝完后,修改拷贝的内容可能会对源内容产生影响。而深拷贝就是拷贝前后的内容相互不影响。
那为什么拷贝前后的内容会相互影响呢?
那就得知道基本类型和引用类型的区别了。
而在js中,有三大引用类型即object、array、function。
因此在拷贝他们的时候,应该使用深拷贝来避免于源内容产生影响。
object.assign()
方法用于将所有可枚举属性的值从一个或多个源对象复制到目标对象。它将返回目标对象。
var target = { a: 1, b: 2 }; var source = { b: 4, c: 5 }; var returnedtarget = object.assign(target, source); console.log(target); //output: { a: 1, b: 4, c: 5 } console.log(returnedtarget); //output: { a: 1, b: 4, c: 5 }
var arr = [1, [7, [9]], {a:'1'} , function(){}, null, undefined, nan]; var result = json.parse(json.stringify(arr));
console.log(arr); //output: [1, [7, [9]], {a:'1'} , function(){}, null, undefined, nan];
console.log(result); //output: [1, [7,[9]], {a:'1'}, null, null, null, null]
所以可以看出,使用json不能实现对function、undefined、nan的拷贝。
如对本文有疑问, 点击进行留言回复!!
selenium + ajax抓取英雄联盟全部英雄的详细信息及多线程保存全部皮肤图片到本地
网友评论