Advertisement
Guest User

Untitled

a guest
May 26th, 2015
264
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.26 KB | None | 0 0
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8">
  5. <title>JS Bin</title>
  6. </head>
  7. <body>
  8.  
  9. <script id="jsbin-javascript">
  10. var whatever = {
  11. key: 'value',
  12. array: [1, 2, {type: 'object'}]
  13. };
  14. var whatever2 = copy_object(whatever);
  15. var whatever3 = copy_object(whatever2);
  16.  
  17. console.log(whatever);
  18. console.log(whatever2);
  19. console.log(whatever3);
  20.  
  21. whatever2.array[2].type = 'cool';
  22. whatever3.array[2].type = 'still works?';
  23.  
  24. console.log(whatever.array[2].type);
  25. console.log(whatever2.array[2].type);
  26. console.log(whatever3.array[2].type);
  27.  
  28. function copy_object(original) {
  29. var new_object = {};
  30. do_copy(original, new_object);
  31. return new_object;
  32. }
  33.  
  34. function copy_array(original) {
  35. var new_array = [];
  36. do_copy(original, new_array);
  37. return new_array;
  38. }
  39.  
  40. function do_copy(original, new_object) {
  41. for (var key in original) {
  42. if (original instanceof Array) key = parseInt(key);
  43. if (typeof original[key] === 'object') {
  44. if (original[key] instanceof Array) {
  45. new_object[key] = copy_array(original[key]);
  46. } else {
  47. new_object[key] = copy_object(original[key]);
  48. }
  49. } else {
  50. new_object[key] = original[key];
  51. }
  52. }
  53. }
  54. </script>
  55.  
  56.  
  57.  
  58. <script id="jsbin-source-javascript" type="text/javascript">var whatever = {
  59. key: 'value',
  60. array: [1, 2, {type: 'object'}]
  61. };
  62. var whatever2 = copy_object(whatever);
  63. var whatever3 = copy_object(whatever2);
  64.  
  65. console.log(whatever);
  66. console.log(whatever2);
  67. console.log(whatever3);
  68.  
  69. whatever2.array[2].type = 'cool';
  70. whatever3.array[2].type = 'still works?';
  71.  
  72. console.log(whatever.array[2].type);
  73. console.log(whatever2.array[2].type);
  74. console.log(whatever3.array[2].type);
  75.  
  76. function copy_object(original) {
  77. var new_object = {};
  78. do_copy(original, new_object);
  79. return new_object;
  80. }
  81.  
  82. function copy_array(original) {
  83. var new_array = [];
  84. do_copy(original, new_array);
  85. return new_array;
  86. }
  87.  
  88. function do_copy(original, new_object) {
  89. for (var key in original) {
  90. if (original instanceof Array) key = parseInt(key);
  91. if (typeof original[key] === 'object') {
  92. if (original[key] instanceof Array) {
  93. new_object[key] = copy_array(original[key]);
  94. } else {
  95. new_object[key] = copy_object(original[key]);
  96. }
  97. } else {
  98. new_object[key] = original[key];
  99. }
  100. }
  101. }</script></body>
  102. </html>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement