src/core/component.js
function extendProperties (dest, source, isObjectBased) {
  var key;
  if (isObjectBased && source.constructor === Object) {
    for (key in source) {
      if (source[key] === undefined) { continue; }
      if (source[key] && source[key].constructor === Object) {
        dest[key] = utils.clone(source[key]);
      } else {
        dest[key] = source[key];
      }
    }
    return dest;
  }
  return source;
}
function extendProperties (dest, source, isObjectBased) {
  var key;
  if (isObjectBased && source.constructor === Object) {
    for (key in source) {
      if (source[key] === undefined) { continue; }
      if (source[key] && source[key].constructor === Object) {
        dest[key] = utils.clone(source[key]);
      } else {
        dest[key] = source[key];
      }
    }
    return dest;
  }
  return source;
}
function extendProperties ( dest , source , isObjectBased ) { var key ; if ( isObjectBased && source . constructor === Object ) { for ( key in source ) { if ( source [ key ] === undefined ) { continue ; } if ( source [ key ] && source [ key ] . constructor === Object ) { dest [ key ] = utils . clone ( source [ key ] ) ; } else { dest [ key ] = source [ key ] ; } } return dest ; } return source ; }
Object extending with checking for single-property schema.

@param dest - Destination object or value.
@param source - Source object or value
@param {boolean} isObjectBased - Whether values are objects.
@returns Overridden object or value.
Object extending with checking for single - property schema .