extend = (a, b, thisArg, {allOwnKeys}= {}) => {
  forEach(b, (val, key) => {
    if (thisArg && isFunction(val)) {
      a[key] = bind(val, thisArg);
    } else {
      a[key] = val;
    }
  }, {allOwnKeys});
  return a;
}
Extends object a by mutably adding to it the properties of object b.

@param {Object} a The object to be extended
@param {Object} b The object to copy properties from
@param {Object} thisArg The object to bind function to

@param {Boolean} [allOwnKeys]
@returns {Object} The resulting value of object a