无法处理function啦还有RegExp啦,还有无法处理循环引用对象(这个我还没有test) 就前两点的话 var a={ a:, b:new RegExp('test'), c:function(){} } 然后var b=JSON.parse(JSON.stringify(a)) 输出b的话 { a: b: {} } 就这样啦 c:function都没有复制过来,RegExp对象没有处理 还有什么的话欢迎补充啦 ------------------------------ 我晕 好像我看s…
JSON.parse(JSON.stringify(obj))我们一般用来深拷贝,其过程说白了 就是利用JSON.stringify 将js对象序列化(JSON字符串),再使用JSON.parse来反序列化(还原)js对象:序列化的作用是存储(对象本身存储的只是一个地址映射,如果断电,对象将不复存在,因此需将对象的内容转换成字符串的形式再保存在磁盘上 )和传输(例如 如果请求的Content-Type是 application/x-www-form-urlencoded,则前端这边需要使用qs.…
JSON.parse(JSON.stringify(obj))我们一般用来深拷贝,其过程说白了 就是利用JSON.stringify 将js对象序列化(JSON字符串),再使用JSON.parse来反序列化(还原)js对象:序列化的作用是存储(对象本身存储的只是一个地址映射,如果断电,对象将不复存在,因此需将对象的内容转换成字符串的形式再保存在磁盘上 )和传输(例如 如果请求的Content-Type是 application/x-www-form-urlencoded,则前端这边需要使用qs.…
别以为JSON.parse(JSON.stringify(data))做深拷贝无敌,对于以下这种情况,当你需要保留父级对象,即 对象存在循环引用,就会报错. var a = [ { "id":5, "pid":2, "categoryName":"搜索行为", }, { "id":6, "pid":3, "categoryName":"购买力",…
根据不包含引用对象的普通数组深拷贝得到启发,不拷贝引用对象,拷贝一个字符串会新辟一个新的存储地址,这样就切断了引用对象的指针联系. 测试例子: var test={ a:"ss", b:"dd", c:[ {dd:"css",ee:"cdd"}, {mm:"ff",nn:"ee"} ] }; var test1 = JSON.parse(JSON.stringify(test));//拷…
使用JavaScript实现深拷贝 1.JSON序列化实现深拷贝 在JS中,想要对某一个对象(引用类型)进行一次简单的深拷贝,可以使用JSON提供给我们的两个方法. JSON.stringfy():可以将JavaScript类型转成对应的JSON字符串: JSON.parse():可以解析JSON,…
目录 序言 语法 深入理解 序言 最近在看<你所不知道的javascript>[中卷]一书,第一部分是类型和语法.本文是基于这部分的产物.在强制类型转换->抽象值操作-> toString 部分,其中对工具函数 JSON.stringify(..) 将 JSON 对象序列化为字符串部分介绍进行了详细的介绍,而自己之前对 JSON.stringify(..) 认识也比较浅. JSON.stringify() 不论是在面试还是工作中(对象的深拷贝.json 字符串序列化)都是重点,总是…
最近做项目的时候遇到一个对象深拷贝的问题,网上看了下发现最为简便的方法是JSON.stringify(),比如你要深拷贝一个对象,可以这么做: var test={ a:"hello", b:"world", c:[ {dd:"css",ee:"cdd"}, {mm:"ff",nn:"ee"} ] }; var testCopy = JSON.parse(JSON.stringify(t…
JSON.parse和JSON.stringify这两个浏览器自带(IE6/7除外)的方法平常我们经常用到,但是一般都只是用到了他们的第一个参数,比如字符串转对象:JSON.parse('{}')   对象转字符串:JSON.stringify({}) 今天特意看了下这两个方法的定义,第二个可选参数也是非常有用. 1. JSON.parse(text[, reviver]) text :     要被解析成JSON对象的字符串 reviver : 如果是一个函数,则规定了原始值如何被解析改造,在…
之前写js比较多的的时候也写过深拷贝,浅拷贝,继承啥的,还有自定义的监听事件.然而过了很久都忘了. 最近在项目上用的深拷贝都是 b = JSON.parse( JSON.stringify(a) )  ,没有深究过原理,也没考量过百分百的正确性.只是用了很多次没啥错误现象. 然而在群里有人问到怎么深拷贝,我就甩出了这个简单的方法.有大神出来说这个是不大正确的.瞬间懵逼,经过大神指点以及自己普及.总算发现坑了,一阵虚汗! 坑点在于,如果要深拷贝的对象属性值为undefined或者是function…