json.stringify深拷贝的缺点

author author     2023-04-23     191

关键词:

参考技术A 1、如果obj里面有时间对象,则JSON.stringify后再JSON.parse的结果,时间将只是字符串的形式,而不是对象的形式

2、如果obj里面有RegExp,则打印出来是空对象

3、如果对象中有函数或者undefined,则会直接被丢掉

4、如果json里有对象是由构造函数生成的,则会丢掉对象的constructon

5、如果对象中存在循环引用的情况也无法正确实现深拷贝

6、如果对象中存在NAN,则序列化后会变成null

assign()与json.parse(json.stringify())深拷贝弊端

Object.assign()只是一级属性复制,比浅拷贝多深拷贝了一层而已。json.parse()就有很多了,请移步https://blog.csdn.net/u013565133/article/details/102819929 查看详情

javascript深拷贝和浅拷贝及json.parse(json.stringify())的缺陷(代码片段)

目录一、理解拷贝二、基本数据类型拷贝三、浅拷贝(shallow clone)对象浅拷贝(1)依次赋值(2)for..in遍历(3)Object.assign(目标对象,要拷贝的对象)(4)展开运算符缺陷:只能拷贝外层... 查看详情

深拷贝浅拷贝

...现方法1.浅拷贝+递归2.判断类型JSON.parse(JSON转为对象)JSON.stringify(obj)(对象转JSON)  varobj3=JSON.parse(JSON.stringify(obj)) 参考:https://www.jianshu.com/p/56598f2ac42e 查看详情

javascript中的深拷贝(代码片段)

...可以解决多层拷贝的问题。2.深拷贝的使用1.JSON.parse(JSON.stringify(object))案例1:根据原始A对象浅拷贝一个新的B对象出来//1.JSON.parse(JSON.stringify(object))深拷贝letA=name:'liujun',age:25,job:name:'web',year:4,lan:['java','... 查看详情

javascript手写深拷贝2.0(更新2022-07-15)

前言鄙人老版js深拷贝博客链接,当时写的存在很多不足...现在跟着方应杭老师复习了下,收获满满。用JSONconstb=JSON.parse(JSON.stringify(a))缺点:不支持Date、RegExp(正则)、函数等数据;不支持引用(即环状结构,类似windo 查看详情

深浅拷贝(代码片段)

...。深拷贝原则上需要深度递归的方式解决或JSON.parse(JSON.stringify(object))。Object.assign 也为浅拷贝(真对2层以上),只不过比普通复制深一层。JSON.parse和JSON.stringifyJSON.parse:从一个字符串中解析出JSON对象。vardata=‘"name":"llpp"‘JSO... 查看详情

json.parse(json.stringify())实现对对象的深拷贝(代码片段)

 JSON.parse(JSON.stringify(obj))我们一般用来深拷贝,其过程说白了就是利用JSON.stringify将js对象序列化(JSON字符串),再使用JSON.parse来反序列化(还原)js对象;序列化的作用是存储(对象本身存储的只是一个地址映射... 查看详情

用原生js实现深拷贝(代码片段)

...做赘述。深拷贝实现方法有两种一种是通过JSON.parse(JSON.Stringify(arr));另一种则是通过递归,本文主要讲述通过递归实现JS的深拷贝。弊端:都不能实现对于内部函数的拷贝。通过JSON.parse(JSON.Stringify(arr))实现vararr=[1,4,name:... 查看详情

深浅拷贝(代码片段)

1、ES6的扩展运算符:实现深拷贝2、JSON.parse(JSON.stringify(js对象)):实现深拷贝  该方法存在弊端,如果JS对象中存在有时间对象,则JSON.stringify后再JSON.parse的结果,时间将只是字符串的形式。而不是时间对象;vartest=name:‘a‘,da... 查看详情

浅拷贝深拷贝

...=obj[k]; //================================深拷贝//JSON.parse(JSON.stringify())varobj4=JSON.parse(JSON.stringify(obj));// 递归functionfun(obj)varobj1=;for(letkinobj)if(typeof(obj[k])==="object")obj1[k]=fun(obj[k]);elseobj1[k]=obj[k];returnobj1;varobj5=fun(obj);obj5.a=123;obj5.c.aa=456... 查看详情

深拷贝(递归)

使用jQuery的$.extendvararr=[[‘a‘,‘b‘],0,1,2,{name:‘old‘}]; varnewArr=$.extend(true,[],arr);  没有Function的对象中可以使用varnewObject=JSON.parse(JSON.stringify(oldObject));ES6扩展运算符实现数组的深拷贝vararr1=[1 查看详情

通过json.parse(json.stringify(obj))转换的对象中的日期(date)

参考技术AJSON.parse(JSON.stringify())通过此方法确实可以实现一定程度的深拷贝,但是使用此方法,要注意对象中的字段如果是Function或者是Date格式的,深拷贝就会出现问题了。如果对象中有Function或者Date格式的数据,尽量还是不要... 查看详情

typescript实现'深拷贝'

...ya:any=;//最关键的是注意下面当a中有方法时,json.parse(json.stringify(xx))是无效的for(letkina)if(typeofa[k]==‘function‘)//如果是方法直接赋值就可以了copy[k]=a[k]elsecopya[k]=JSON.parse(JSON.stringify(a[k]))  !!注意,比较重要的一点,这里的深打了... 查看详情

简单深拷贝

letobj=c:1,d:()=>obj_=a:1,b:2obj__=a:()=>,b:()=>,c:1_obj=[1,2,3,1]_obj_=1//深拷贝//JSON.parse(JSON.stringify())//局限性://他无法实现对函数、RegExp等特殊对象的克隆//会抛弃对象的const 查看详情

vue深拷贝

Vue.set(row,‘isEdit‘,true);letnewRow=JSON.parse(JSON.stringify(row));this.totalData.push(newRow);console.log(‘添加‘,this.totalData) 从其它表格添加进来的数据如果有相同的就会指向同一个引用,所以需要深度复制一次。 查看详情

简单深拷贝

letobj=c:1,d:()=>obj_=a:1,b:2obj__=a:()=>,b:()=>,c:1_obj=[1,2,3,1]_obj_=1//深拷贝//JSON.parse(JSON.stringify())//局限性://他无法实现对函数、RegExp等特殊对象的克隆//会抛弃对象的const 查看详情

深拷贝与浅拷贝复习(代码片段)

...复制objClone[key]=obj[key];returnobjClone; 借用JSON对象的JSON.stringify和JSON.parsefunctiondeepClone(obj)let_obj=JSON.stringify(obj),objClone=JSON.parse(_obj);returnobjClone 借用JQ的extend方法$.extend([deep],target,object1[,objectN])leta=[0,1,[2,3],4],b=$.extend(true,[],a);a[0... 查看详情

深拷贝浅拷贝问题

1varcloneObj=function(obj){2varstr,newobj=obj.constructor===Array?[]:{};3if(typeofobj!==‘object‘){4return;5}elseif(window.JSON){6str=JSON.stringify(obj),//系列化对象7newobj=JSON.parse(str);//还原8}else{9for( 查看详情