code: function mergeObject (a, b) {
    var keys = Object.keys(b)
    var k;
  
    for (var i = 0; i < keys.length; i++) {
      k = keys[i];
  
      if ('object' !== type(b[k]) && 'array' !== type(b[k])) {
        // TODO: better deref handling of other types
        a[k] = b[k];
      } else {
        a[k] = a.hasOwnProperty(k)
          ? merge(a[k], b[k])
          : merge('array' === type(b[k]) ? [] : {}, b[k]);
      }
    }
  
    return a;
  }
docs: /*!
  Start merge scenario for objects.
  
  @param {Object} destination
  @param {Object} source
  @return {Object} destination merged
  @api private