当前位置:Gxlcms > JavaScript > JavaScript基于遍历操作实现对象深拷贝功能示例

JavaScript基于遍历操作实现对象深拷贝功能示例

时间:2021-07-01 10:21:17 帮助过:20人阅读

本文实例讲述了JavaScript基于遍历操作实现对象深拷贝功能。分享给大家供大家参考,具体如下:

  1. function getType(o){
  2. var _t;
  3. return ((_t = typeof(o)) == "object" ? o==null && "null" || Object.prototype.toString.call(o).slice(8,-1):_t).toLowerCase();
  4. }
  5. function extend(destination,source){
  6. for(var p in source){
  7. if(getType(source[p])=="array"||getType(source[p])=="object"){
  8. destination[p]=getType(source[p])=="array"?[]:{};
  9. arguments.callee(destination[p],source[p]);
  10. }else{
  11. destination[p]=source[p];
  12. }
  13. }
  14. }
  15. var test={
  16. a:"ss",
  17. b:"dd",
  18. c:[
  19. {d:"css",e:"cdd"},
  20. {
  21. m:"ff",
  22. n:[
  23. {kk:"11",jj:"22"},
  24. {ll:"44"}
  25. ]
  26. }
  27. ]
  28. };
  29. var test1={};
  30. extend(test1,test);
  31. console.log(test);
  32. console.log(test1);
  33. test1.c[1].n[0].kk="change"; //改变test1的c属性对象的d属性
  34. console.log(test);
  35. console.log(test1);
  36. console.log(test.c[1].n[0]);
  37. 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程序设计有所帮助。

人气教程排行