使用JSON.stringify() 和JSON.parse() 可以很方便地实现深拷贝,因为 JSON.stringify() 会将对象或数组转换为一个 JSON 字符串,而 JSON.parse() 则会将这个 JSON 字符串转换回一个新的对象或数组。这样,原始对象或数组中的所有属性或元素都会被递归地复制到新对象或数组中。
然后使用JSON.parse将JSON字符串反序列化回JavaScript对象时,虽然表面上看起来对象的结构得以保留,但实际上某些属性可能并未正确复制。这可能是由于JSON.stringify和JSON.parse在处理特定类型的值时的限制所导致的。
4、如果obj里有NaN、Infinity和-Infinity,则序列化的结果会变成null 5、JSON.stringify()只能序列化对象的可枚举的自有属性,例如 如果obj中的对象是有构造函数生成的, 则使用JSON.parse(JSON.stringify(obj))深拷贝后,会丢弃对象的constructor; function Person(name) { this.name = name; console.log(name) } ...
首先我们来看下代码: 代码语言:javascript 复制 letdeepClone=function(obj){returnJSON.parse(JSON.stringify(obj))}leta={name:'Ken',age:18,hobbit:['dance','sing',{type:'sports',value:'run'}],schoolData:{grades:'A',},run:function(){},walk:undefined,fly:NaN,cy:null}letb=deepClone(a)cons...
JSON.parse,JSON.stringify 深浅拷贝的缺陷,JSON.parse,JSON.stringify深浅拷贝的缺陷经常使用JSON.parse,JSON.stringify的小伙伴都知道,他们两个可以用于深拷贝对象,但是可能会不太注意一些缺陷,是又一次我使用他们去深拷贝对象,我发现有些属性莫名其妙的丢失了,之
使用JSON.parse(JSON.stringify(object))实现深拷贝局限 大部分情况我们都可以使用JSON.parse(JSON.stringify(object))来实现深拷贝,但该方法也有局限性,如下: 会忽略 undefined 会忽略 symbol 不能序列
JSON.stringify(val)); }; // 取 function getLocalStorage(key) { let val = JSON.parse(win...
JSON.parse,JSON.stringify 深浅拷贝的缺陷 经常使用 JSON.parse, JSON.stringify 的小伙伴都知道,他们两个可以用于深拷贝对象,但是可能会不太注意一些缺陷,是又一次我使用他们去深拷贝对象,我发现有些属性莫名其妙的丢失了,之前没有太深究其弊端,今天趁着有空深究一下这些弊端。 首先我们来看下代码: let deepClone...
深拷贝方案一 JSON.parse(JSON.stringify(obj)) 缺陷: 属性值为函数和undefined的属性会丢失 属性值为正则表达式的会变成{} 属性值为时间对象的会变成时间字符串 let obj = {string: "字符串",Number: 10,null: null,undefined: undefined,date: new Date(),function: () => {console.log("我是一个函数...
3.b = JSON.parse( JSON.stringify(a) )局限性:无法复制函数;原型链没了,对象就是object,所属的类没了。但是他简单,大多时候完全可以满足需求了! 顺便贴上好用的深拷贝函数 var a={ m:undefined, b:2, c:[1,2,3], d:[1,[2,3],4], ...