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 相关文章推荐
Sample script that displays all of the users in a given SQL Server DB
Jun 16 Javascript
document.compatMode的CSS1compat使用介绍
Apr 03 Javascript
JS遍历Json字符串中键值对先转成JSON对象再遍历
Aug 15 Javascript
学JavaScript七大注意事项【必看】
May 04 Javascript
JavaScript面向对象编写购物车功能
Aug 19 Javascript
使用vue实现简单键盘的示例(支持移动端和pc端)
Dec 25 Javascript
Vuerouter的beforeEach与afterEach钩子函数的区别
Dec 26 Javascript
说说Vuex的getters属性的具体用法
Apr 15 Javascript
elementUI 动态生成几行几列的方法示例
Jul 11 Javascript
vuejs移动端实现div拖拽移动
Jul 25 Javascript
Taro UI框架开发小程序实现左滑喜欢右滑不喜欢效果的示例代码
May 18 Javascript
html5调用摄像头截图功能
Jan 18 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
PHP数组内存耗用太多问题的解决方法
2010/04/05 PHP
采集邮箱的php代码(抓取网页中的邮箱地址)
2012/07/17 PHP
php中定时计划任务的实现原理
2013/01/08 PHP
php使用curl抓取qq空间的访客信息示例
2014/02/28 PHP
php自定义加密与解密程序实例
2014/12/31 PHP
PHP 的比较运算与逻辑运算详解
2016/05/12 PHP
PHP获取文本框、密码域、按钮的值实例代码
2017/04/19 PHP
使用JS操作页面表格,元素的一些技巧
2007/02/02 Javascript
js中escape对应的C#解码函数 UrlDecode
2012/12/16 Javascript
JavaScript 处理Iframe自适应高度(同或不同域名下)
2013/03/29 Javascript
JavaScript 对象深入学习总结(经典)
2015/09/29 Javascript
Js 获取当前函数参数对象的实现代码
2016/06/20 Javascript
js中常用的Math方法总结
2017/01/12 Javascript
input获取焦点时底部菜单被顶上来问题的解决办法
2017/01/24 Javascript
vue-cli中的babel配置文件.babelrc实例详解
2018/02/22 Javascript
微信小程序仿微信运动步数排行(交互)
2018/07/13 Javascript
基于jQuery ztree实现表格风格的树状结构
2018/08/31 jQuery
详解bootstrap-fileinput文件上传控件的亲身实践
2019/03/21 Javascript
js最全的数组的降维5种办法(小结)
2020/04/28 Javascript
javascript实现多边形碰撞检测
2020/10/24 Javascript
Vue实现菜单切换功能
2020/11/08 Javascript
python的绘图工具matplotlib使用实例
2014/07/03 Python
利用PyInstaller将python程序.py转为.exe的方法详解
2017/05/03 Python
Python使用gluon/mxnet模块实现的mnist手写数字识别功能完整示例
2019/12/18 Python
python opencv根据颜色进行目标检测的方法示例
2020/01/15 Python
python 实现读取csv数据,分类求和 再写进 csv
2020/05/18 Python
keras中epoch,batch,loss,val_loss用法说明
2020/07/02 Python
Python+OpenCV图像处理——图像二值化的实现
2020/10/24 Python
英国游戏机和游戏购物网站:365games.co.uk
2018/06/18 全球购物
c语言常见笔试题总结
2016/09/05 面试题
英语专业个人求职自荐信
2013/09/21 职场文书
2014年寒假社会实践活动心得体会
2014/04/07 职场文书
2014医学院领导班子对照检查材料思想汇报
2014/09/19 职场文书
综合办公室主任岗位职责
2015/04/01 职场文书
月考总结与反思
2015/10/22 职场文书
python三子棋游戏
2022/05/04 Python