JS对象深拷贝
Vue最独特的特性之一,是其非侵入性的响应式系统。数据模型仅仅是普通的 JavaScript 对象。而当你修改它们时,视图会进行更新。这使得状态管理非常简单直接。在有些特定的时候,我们希望修改数据,并不影响原数据的时候。因为对象是引用类型,我们就要用深拷贝复制一个变量。深拷贝是能拷贝对象中的对象,而不会对原对象产生影响。下面雷雪松就详细的介绍一下JS对象深拷贝的两种方法。
一、递归复制Json对象的值
[cc lang=”javascript”]function copy(json){//采用递归的方法
var object= {};
for(var o in json){
object[o] =typeof json[o] === “object”? copy(json[o]) :json[o];//若是里边有对象,再次调用copy方法
}
return object;
}[/cc]
二、把JSON对象转成字符串,在装成对象。因为字符串是值类型
[cc lang=”javascript”]var object=JSON.parse(JSON.stringify(json));//json和objec就是两个独立的对象了,各自的更改不会相互影响。[/cc]
大家感兴趣的话可以看一下雷雪松的博客中的这篇文章《JS中的值类型和引用类型详解》,看完就很清楚什么是值类型和引用类型以及为什么需要深拷贝来复制一个相互独立互不影响的对象啦。
来源:JS对象深拷贝
2019年3月11日 下午11:39
js对象类型有点多,用到网页设计的时候好累
2019年4月4日 上午9:05
js真的 好乱…
2019年5月5日 下午9:13
哇塞,居然是沙发?留个名
2019年5月9日 下午8:30
写的太经典了,我竟无言以对。
2019年5月10日 下午12:49
非常精彩的文章,引人入胜,痛快淋漓。感谢楼主分享。