Changeset 22447


Ignore:
Timestamp:
02/21/18 16:44:22 (7 years ago)
Author:
dlcheng
Message:

BUG (JS): Correcting deepCopy routine undefined reference error.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk-jpl/src/m/classes/model.js

    r22446 r22447  
    566566                         *
    567567                         */
    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                                                        }
    599590                                                }
    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);
    608601                } /*}}}*/
    609602        //properties
Note: See TracChangeset for help on using the changeset viewer.