Changeset 22447
- Timestamp:
- 02/21/18 16:44:22 (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/m/classes/model.js
r22446 r22447 566 566 * 567 567 */ 568 var md1; 569 570 switch (typeof obj) { 571 case "object": 572 if (obj === null) { 573 // null => null 574 md1 = null; 575 } else { 576 switch (toString.call(obj)) { 577 case "[object Array]": 578 // It's an array, create a new array with 579 // deep copies of the entries 580 md1 = obj.map(deepCopy); 581 break; 582 case "[object Date]": 583 // Clone the date 584 md1 = new Date(obj); 585 break; 586 case "[object RegExp]": 587 // Clone the RegExp 588 md1 = new RegExp(obj); 589 break; 590 // ...probably a few others 591 default: 592 // Some other kind of object, deep-copy its 593 // properties into a new object 594 md1 = Object.keys(obj).reduce(function(prev, key) { 595 prev[key] = deepCopy(obj[key]); 596 return prev; 597 }, {}); 598 break; 568 function recursiveDeepCopy(obj) { 569 var returnValue; 570 571 switch (typeof obj) { 572 case "object": 573 if (obj === null) { 574 // null => null 575 returnValue = null; 576 } else { 577 switch (toString.call(obj)) { 578 case "[object Array]": 579 // It's an array, create a new array with deep copies of the entries 580 returnValue = obj.map(recursiveDeepCopy); 581 break; 582 default: 583 // Some other kind of object, deep-copy its properties into a new object 584 returnValue = Object.keys(obj).reduce(function(prev, key) { 585 prev[key] = recursiveDeepCopy(obj[key]); 586 return prev; 587 }, {}); 588 break; 589 } 599 590 } 600 } 601 break; 602 default: 603 // It's a primitive, copy via assignment 604 md1 = obj; 605 break; 606 } 607 return md1; 591 break; 592 default: 593 // It's a primitive, copy via assignment 594 returnValue = obj; 595 break; 596 } 597 return returnValue; 598 } 599 600 return recursiveDeepCopy(md); 608 601 } /*}}}*/ 609 602 //properties
Note:
See TracChangeset
for help on using the changeset viewer.