build/es-class.max.amd.js
function copyMerged(source, target) {
    for (var
      key, descriptor, value, tvalue,
      names = oK(source),
      i = 0; i < names.length; i++
    ) {
      key = names[i];
      descriptor = gOPD(source, key);
      // target already has this property
      if (hOP.call(target, key)) {
        // verify the descriptor can  be merged
        if (hOP.call(descriptor, VALUE)) {
          value = descriptor[VALUE];
          // which means, verify it's an object
          if (isObject(value)) {
            // in such case, verify the target can be modified
            descriptor = gOPD(target, key);
            // meaning verify it's a data descriptor
            if (hOP.call(descriptor, VALUE)) {
              tvalue = descriptor[VALUE];
              // and it's actually an object
              if (isObject(tvalue)) {
                copyMerged(value, tvalue);
              }
            }
          }
        }
      } else {
        // target has no property at all
        if (hOP.call(descriptor, VALUE)) {
          // copy deep if it's an object
          copyValueIfObject(descriptor, copyDeep);
        }
        defineProperty(target, key, descriptor);
      }
    }
  }
function copyMerged(source, target) {
    for (var
      key, descriptor, value, tvalue,
      names = oK(source),
      i = 0; i < names.length; i++
    ) {
      key = names[i];
      descriptor = gOPD(source, key);
      // target already has this property
      if (hOP.call(target, key)) {
        // verify the descriptor can  be merged
        if (hOP.call(descriptor, VALUE)) {
          value = descriptor[VALUE];
          // which means, verify it's an object
          if (isObject(value)) {
            // in such case, verify the target can be modified
            descriptor = gOPD(target, key);
            // meaning verify it's a data descriptor
            if (hOP.call(descriptor, VALUE)) {
              tvalue = descriptor[VALUE];
              // and it's actually an object
              if (isObject(tvalue)) {
                copyMerged(value, tvalue);
              }
            }
          }
        }
      } else {
        // target has no property at all
        if (hOP.call(descriptor, VALUE)) {
          // copy deep if it's an object
          copyValueIfObject(descriptor, copyDeep);
        }
        defineProperty(target, key, descriptor);
      }
    }
  }
function copyMerged ( source , target ) { for ( var key , descriptor , value , tvalue , names = oK ( source ) , i = 0 ; i < names . length ; i ++ ) { key = names [ i ] ; descriptor = gOPD ( source , key ) ; // target already has this property if ( hOP . call ( target , key ) ) { // verify the descriptor can  be merged if ( hOP . call ( descriptor , VALUE ) ) { value = descriptor [ VALUE ] ; // which means, verify it's an object if ( isObject ( value ) ) { // in such case, verify the target can be modified descriptor = gOPD ( target , key ) ; // meaning verify it's a data descriptor if ( hOP . call ( descriptor , VALUE ) ) { tvalue = descriptor [ VALUE ] ; // and it's actually an object if ( isObject ( tvalue ) ) { copyMerged ( value , tvalue ) ; } } } } } else { // target has no property at all if ( hOP . call ( descriptor , VALUE ) ) { // copy deep if it's an object copyValueIfObject ( descriptor , copyDeep ) ; } defineProperty ( target , key , descriptor ) ; } } }
given two objects, performs a deep copy per each property not present in the target otherwise merges, without overwriting, all properties within the object
given two objects performs a deep copy per each property not present in the target otherwise merges without overwriting all properties within the object