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 添加和移除函数的通用方法
Oct 20 Javascript
jquery 锁定弹出层实现代码
Feb 23 Javascript
JavaScript中string对象
Jun 12 Javascript
AngularJS 日期格式化详解
Dec 23 Javascript
javascript回到顶部特效
Jul 30 Javascript
JavaScript中removeChild 方法开发示例代码
Aug 15 Javascript
ionic实现底部分享功能
May 11 Javascript
微信小程序实现刷脸登录
May 25 Javascript
基于Vue实现微信小程序的图文编辑器
Jul 25 Javascript
js数据类型检测总结
Aug 05 Javascript
jquery实现有过渡效果的tab切换
Jul 17 jQuery
uniapp引入支付宝原生扫码插件步骤详解
Jul 23 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中通过语义URL防止网站被攻击的方法分享
2011/09/08 PHP
PHP中strncmp()函数比较两个字符串前2个字符是否相等的方法
2016/01/07 PHP
调用WordPress函数统计文章访问量及PHP原生计数器的实现
2016/03/21 PHP
PHP实现链式操作的原理详解
2016/09/16 PHP
PHP面向对象程序设计中的self、static、parent关键字用法分析
2019/08/14 PHP
IE不出现Flash激活框的小发现的js实现方法
2007/09/07 Javascript
IE和Firefox下javascript的兼容写法小结
2008/12/10 Javascript
动态刷新 dorado树的js代码
2009/06/12 Javascript
json原理分析及实例介绍
2012/11/29 Javascript
Javascript设置对象的ReadOnly属性(示例代码)
2013/12/25 Javascript
jQuery实现返回顶部效果的方法
2015/05/29 Javascript
jquery-mobile基础属性与用法详解
2016/11/23 Javascript
使用contextMenu插件实现Bootstrap table弹出右键菜单
2017/02/20 Javascript
nodejs处理图片的中间件node-images详解
2017/05/08 NodeJs
vue.js $refs和$emit 父子组件交互的方法
2017/12/20 Javascript
React如何避免重渲染
2018/04/10 Javascript
js实现页面多个日期时间倒计时效果
2019/06/20 Javascript
layui将table转化表单显示的方法(即table.render转为表单展示)
2019/09/24 Javascript
Django项目实战之用户头像上传与访问的示例
2018/04/21 Python
Python实现程序判断季节的代码示例
2019/01/28 Python
python实现知乎高颜值图片爬取
2019/08/12 Python
Python模块_PyLibTiff读取tif文件的实例
2020/01/13 Python
css3实现波纹特效、H5实现动态波浪效果
2018/01/31 HTML / CSS
英国玛莎百货澳大利亚:Marks & Spencer Australia
2019/08/30 全球购物
应届大学生求职的自我评价
2013/11/17 职场文书
生日宴会答谢词
2014/01/09 职场文书
《散步》教学反思
2014/03/02 职场文书
银行服务明星推荐材料
2014/05/29 职场文书
2014年安全生产目标责任书
2014/07/23 职场文书
环保公益策划方案
2014/08/15 职场文书
中韩经贸翻译专业大学生职业生涯规划范文
2014/09/18 职场文书
工作表现证明
2015/06/15 职场文书
红色故事汇观后感
2015/06/18 职场文书
MySQL学习总结-基础架构概述
2021/04/05 MySQL
win11开机发生死循环重启怎么办?win11开机发生死循环重启解决方法
2022/08/05 数码科技
SQLServer常见数学函数梳理总结
2022/08/05 MySQL