JS使用JSON.parse(),JSON.stringify()实现对对象的深拷贝功能分析


Posted in Javascript onMarch 06, 2019

本文实例讲述了JS使用JSON.parse(),JSON.stringify()实现对对象的深拷贝功能。分享给大家供大家参考,具体如下:

根据不包含引用对象的普通数组深拷贝得到启发,不拷贝引用对象,拷贝一个字符串会新辟一个新的存储地址,这样就切断了引用对象的指针联系。

测试例子:

var test={
  a:"ss",
  b:"dd",
  c:[
    {dd:"css",ee:"cdd"},
    {mm:"ff",nn:"ee"}
  ]
};
var test1 = JSON.parse(JSON.stringify(test));//拷贝数组,注意这行的拷贝方法
console.log(test);
console.log(test1);
test1.c[0].dd="change"; //改变test1的c属性对象的d属性
console.log(test); //不影响test
console.log(test1);

测试结果:

JS使用JSON.parse(),JSON.stringify()实现对对象的深拷贝功能分析

根据测试结果,我们可以看到,test1已经从test复制一份,并且test1改变其中属性的值时,对原来的对象test没有造成影响。

JSON.parse(),JSON.stringify()兼容性问题

可以通过为IE7以及IE7以下版本的IE浏览器引入json2.js,使用json2.js来解决JSON的兼容性问题

<!--[if lt IE 7]>
<script src="具体放路径/json2.js"></script> 
<![endif]-->

json2.js的github地址为:https://github.com/douglascrockford/JSON-js

好了,到这里就实现了,使用JSON.parse(),JSON.stringify()对对象的深拷贝~~

感兴趣的朋友可以使用在线HTML/CSS/JavaScript代码运行工具:http://tools.3water.com/code/HtmlJsRun测试上述代码运行效果。

更多关于JavaScript相关内容可查看本站专题:《javascript面向对象入门教程》、《JavaScript切换特效与技巧总结》、《JavaScript查找算法技巧总结》、《JavaScript错误与调试技巧总结》、《JavaScript数据结构与算法技巧总结》、《JavaScript遍历算法与技巧总结》及《JavaScript数学运算用法总结》

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
childNodes.length与children.length的区别
May 14 Javascript
js模拟类继承小例子
Jul 17 Javascript
Ext对基本类型的扩展 ext,extjs,format
Dec 25 Javascript
JS 自定义带默认值的函数
Jul 21 Javascript
浅谈javascript中onbeforeunload与onunload事件
Dec 10 Javascript
JS获取鼠标坐标位置实例分析
Jan 20 Javascript
js一维数组、多维数组和对象的混合使用方法
Apr 03 Javascript
JavaScript实现使用Canvas绘制图形的基本教程
Oct 27 Javascript
VueJs 搭建Axios接口请求工具
Nov 20 Javascript
基于Vue+elementUI实现动态表单的校验功能(根据条件动态切换校验格式)
Apr 04 Javascript
微信小程序swiper禁止用户手动滑动代码实例
Aug 23 Javascript
修改NPM全局模式的默认安装路径的方法
Dec 15 Javascript
jQuery使用$.extend(true,object1, object2);实现深拷贝对象的方法分析
Mar 06 #jQuery
微信小程序利用swiper+css实现购物车商品删除功能
Mar 06 #Javascript
JS实现数组深拷贝的方法分析
Mar 06 #Javascript
node.js中ws模块创建服务端和客户端,网页WebSocket客户端
Mar 06 #Javascript
node.js中express模块创建服务器和http模块客户端发请求
Mar 06 #Javascript
微信小程序性能优化之checkSession的使用
Mar 06 #Javascript
详解在微信小程序的JS脚本中使用Promise来优化函数处理
Mar 06 #Javascript
You might like
DC《神奇女侠2》因疫情推迟上映 温子仁新恐怖片《恶性》撤档
2020/04/09 欧美动漫
关于PHP5 Session生命周期介绍
2010/03/02 PHP
php网站被挂木马后的修复方法总结
2014/11/06 PHP
功能强大的PHP图片处理类(水印、透明度、旋转)
2015/10/21 PHP
Laravel5.1 框架表单验证操作实例详解
2020/01/07 PHP
javascript中typeof的使用示例
2013/12/19 Javascript
22点关于jquery性能优化的建议
2014/05/28 Javascript
极力推荐10个短小实用的JavaScript代码段
2016/08/03 Javascript
深入理解Node.js的HTTP模块
2016/10/12 Javascript
关于axios返回空对象的问题解决
2017/04/04 Javascript
深入理解JavaScript继承的多种方式和优缺点
2017/05/12 Javascript
JavaScript数组的5种迭代方法
2017/09/29 Javascript
p5.js入门教程之小球动画示例代码
2018/03/15 Javascript
json对象及数组键值的深度大小写转换问题详解
2018/03/30 Javascript
vue与原生app的对接交互的方法(混合开发)
2018/11/28 Javascript
vue计算属性+vue中class与style绑定(推荐)
2020/03/30 Javascript
[01:51]DAC趣味视频-如何成为职业选手.mp4
2017/04/02 DOTA
Python中绑定与未绑定的类方法用法分析
2016/04/29 Python
python3音乐播放器简单实现代码
2020/04/20 Python
Python操作MongoDB详解及实例
2017/05/18 Python
python 简单搭建阻塞式单进程,多进程,多线程服务的实例
2017/11/01 Python
Python实现基本数据结构中栈的操作示例
2017/12/04 Python
关于python多重赋值的小问题
2019/04/17 Python
Python利用全连接神经网络求解MNIST问题详解
2020/01/14 Python
Django+Uwsgi+Nginx如何实现生产环境部署
2020/07/31 Python
深深扎根运动世界的生活品牌:Tillys
2017/10/30 全球购物
澳大利亚购买最佳炊具品牌网站:Cookware Brands
2019/02/16 全球购物
自我鉴定范文
2013/11/10 职场文书
幼儿园实习自我鉴定
2013/12/15 职场文书
中学生期中自我鉴定
2014/04/20 职场文书
汽车运用工程专业求职信
2014/06/18 职场文书
教师师德师风自我剖析材料
2014/09/29 职场文书
党的群众路线教育实践活动学习计划
2014/11/03 职场文书
旷课检讨书
2015/01/26 职场文书
Python机器学习之底层实现KNN
2021/06/20 Python
Python TypeError: ‘float‘ object is not subscriptable错误解决
2022/12/24 Python