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 相关文章推荐
JavaScript Base64编码和解码,实现URL参数传递。
Sep 18 Javascript
jQuery 技巧大全(新手入门篇)
May 12 Javascript
firefox插件Firebug的使用教程
Jan 02 Javascript
JavaScript面向对象的实现方法小结
Apr 14 Javascript
Ajax与服务器(JSON)通信实例代码
Nov 05 Javascript
利用Javascript实现简单的转盘抽奖
Feb 13 Javascript
使用Require.js封装原生js轮播图的实现代码
Jun 15 Javascript
JS浅拷贝和深拷贝原理与实现方法分析
Feb 28 Javascript
深入Node TCP模块的理解
Mar 13 Javascript
vue模式history下在iis中配置流程
Apr 17 Javascript
file-loader打包图片文件时路径错误输出为[object-module]的解决方法
Jan 03 Javascript
微信小程序实现点击生成随机验证码
Sep 09 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
动态生成gif格式的图像要注意?
2006/10/09 PHP
php页面缓存方法小结
2015/01/10 PHP
PHP人民币金额转大写实例代码
2015/10/02 PHP
PHP实现微信提现功能
2018/09/30 PHP
用javascript获得地址栏参数的两种方法
2006/11/08 Javascript
用JavaScript获取网页中的js、css、Flash等文件
2006/12/20 Javascript
检测input每次的输入是否合法遇到汉字输入就有问题
2012/05/23 Javascript
javascript 拷贝节点cloneNode()使用介绍
2014/04/03 Javascript
jquery选择器使用详解
2014/04/08 Javascript
javascript中的throttle和debounce浅析
2014/06/06 Javascript
一个不错的仿携程自定义数据下拉选择select
2014/09/01 Javascript
让JavaScript和其它资源并发下载的方法
2014/10/16 Javascript
JQuery实现样式设置、追加、移除与切换的方法
2015/06/11 Javascript
js脚本分页代码分享(7种样式)
2015/08/19 Javascript
全屏js头像上传插件源码高清版
2016/03/29 Javascript
第九篇Bootstrap导航菜单创建步骤详解
2016/06/21 Javascript
Vuex模块化实现待办事项的状态管理
2017/03/15 Javascript
vue使用高德地图点击下钻上浮效果的实现思路
2019/10/12 Javascript
微信JSSDK实现打开摄像头拍照再将相片保存到服务器
2019/11/15 Javascript
Bootstrap简单实用的表单验证插件BootstrapValidator用法实例详解
2020/03/29 Javascript
详解React的回调渲染模式
2020/09/10 Javascript
Python中实现switch功能实例解析
2018/01/11 Python
Python中Numpy包的安装与使用方法简明教程
2018/07/03 Python
python3实现表白神器
2019/04/09 Python
Python两台电脑实现TCP通信的方法示例
2019/05/06 Python
python中的协程深入理解
2019/06/10 Python
python tkinter组件使用详解
2019/09/16 Python
Django values()和value_list()的使用
2020/03/31 Python
python 实现aes256加密
2020/11/27 Python
css3 flex实现div内容水平垂直居中的几种方法
2020/03/27 HTML / CSS
HTML5 表单验证失败的提示语问题
2017/07/13 HTML / CSS
苹果美国官方商城:Apple美国
2016/08/24 全球购物
素质教育标语
2014/06/27 职场文书
校外活动方案
2014/08/28 职场文书
《我和小伙伴》教学反思
2016/02/20 职场文书
科普 | 业余无线电知识-波段篇
2022/02/18 无线电