src/scripts/core/Context.js
/**
     * extendWith - extend the current context with a single object. Allows for
     * the specification of specific keys to be cherry picked of the passed in
     * object.
     *
     * @param  {object} mixinContext the additional context to mix into the current context.
     * @param  {object} opts={}      options to allow for fine grained mixing in.
     * @param  {Array<string>} opts.keys a list of keys to cherry pick from the additional context.
     */
extend the current context with a single object. Allows for
the specification of specific keys to be cherry picked of the passed in
object.

@param  {object} mixinContext the additional context to mix into the current context.
@param  {object} opts={}      options to allow for fine grained mixing in.
@param  {Array} opts.keys a list of keys to cherry pick from the additional context.
extend the current context with a single object . Allows for the specification of specific keys to be cherry picked of the passed in object . @param { object } mixinContext the additional context to mix into the current context . @param { object } opts = {} options to allow for fine grained mixing in . @param { Array } opts . keys a list of keys to cherry pick from the additional context .
extendWith (mixinContext, opts={}) {
        if (opts.keys) {
            opts.keys.forEach((key) => {
                this[key] = mixinContext[key];
            });
        } else {
            this.mixin(mixinContext);
        }
    }
extendWith ( mixinContext , opts = { } ) { if ( opts . keys ) { opts . keys . forEach ( ( key ) => { this [ key ] = mixinContext [ key ] ; } ) ; } else { this . mixin ( mixinContext ) ; } }
extendWith - extend the current context with a single object.
extendWith - extend the current context with a single object .