JavaScript基于遍历操作实现对象深拷贝功能示例
本文实例讲述了JavaScript基于遍历操作实现对象深拷贝功能。分享给大家供大家参考,具体如下:
function getType(o){ var _t; return ((_t = typeof(o)) == "object" ? o==null && "null" || Object.prototype.toString.call(o).slice(8,-1):_t).toLowerCase(); } function extend(destination,source){ for(var p in source){ if(getType(source[p]测试结果)=="array"||getType(source[p])=="object"){ destination[p]=getType(source[p])=="array"?[]:{}; arguments.callee(destination[p],source[p]); }else{ destination[p]=source[p]; } } } var test={ a:"ss", b:"dd", c:[ {d:"css",e:"cdd"}, { m:"ff", n:[ {kk:"11",jj:"22"}, {ll:"44"} ] } ] }; var test1={}; extend(test1,test); console.log(test); console.log(test1); test1.c[1].n[0].kk="change"; //改变test1的c属性对象的d属性 console.log(test); console.log(test1); console.log(test.c[1].n[0]); console.log(test1.c[1].n[0]);
从测试结果可以看到,通过使用这个遍历的方法,成功将对象test深拷贝复制一份,得到test1。并且更改test1对象的属性,并不会对test对象产生影响。
感兴趣的朋友可以使用在线HTML/CSS/JavaScript代码运行工具:http://tools.jb51.net/code/HtmlJsRun测试上述代码运行效果。
更多关于JavaScript相关内容可查看本站专题:《javascript面向对象入门教程》、《JavaScript切换特效与技巧总结》、《JavaScript查找算法技巧总结》、《JavaScript错误与调试技巧总结》、《JavaScript数据结构与算法技巧总结》、《JavaScript遍历算法与技巧总结》及《JavaScript数学运算用法总结》
希望本文所述对大家JavaScript程序设计有所帮助。
您可能感兴趣的文章:
- JavaScript基于DOM操作实现简单的数学运算功能示例
- JavaScript基于对象方法实现数组去重及排序操作示例
- PHP基于非递归算法实现先序、中序及后序遍历二叉树操作示例
- PHP基于双向链表与排序操作实现的会员排名功能示例
- 基于对象合并功能的实现示例
- JavaScript实现多叉树的递归遍历和非递归遍历算法操作示例
- Python基于列表list实现的CRUD操作功能示例
- JavaScript数组,JSON对象实现动态添加、修改、删除功能示例
- JavaScript基于数组实现的栈与队列操作示例
- JS基于FileSaver.js插件实现文件保存功能示例[原创]_javascript技巧_脚本之家
- Javascript操作div及其内含对象示例
- js实现的xml对象转json功能示例
- silverlight线程与基于事件驱动javascript引擎(实现轨迹回放功能)
- 基于Javascript实现倒计时功能
- Golang+Android基于HttpURLConnection实现的文件上传功能示例
- 使用javascript操作多选列表框,实现动态增加删除,左右移动,上下排序移动等功能。
- JavaScript 基于对象事件的 AOP 实现
- 基于javascript实现仿百度输入框自动匹配功能
- 在Javascript操作JSON对象,增加 删除 修改的简单实现
- 基于thinkPHP类的插入数据库操作功能示例