Changeset 22446
- Timestamp:
- 02/21/18 16:29:47 (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/m/classes/model.js
r22324 r22446 554 554 return md; 555 555 } /*}}}*/ 556 this.deepCopy = function(md) { //{{{ 557 /* 558 *DEEPCOPY - returns a deep copy of the model. 559 * 560 * This routine creates a new model with new objects 561 * for each corresponding object in the original model, 562 * so that changes in one do not affect the other. 563 * 564 * Usage: 565 * md1=deepCopy(md) 566 * 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; 599 } 600 } 601 break; 602 default: 603 // It's a primitive, copy via assignment 604 md1 = obj; 605 break; 606 } 607 return md1; 608 } /*}}}*/ 556 609 //properties 557 610 // {{{
Note:
See TracChangeset
for help on using the changeset viewer.