sjl.js
function mergeOnPropsMulti (obj1, obj2) {
        var args = argsToArray(arguments),
            deep = extractBoolFromArrayStart(args),
            arg0 = args.shift();

        // Extend object `0` with other objects
        args.forEach(function (arg) {
            if (!isObject(arg)) {
                return;
            }
            // Extend `arg0` with `arg`
            mergeOnProps(arg0, arg, deep);
        });

        return arg0;
    }
function mergeOnPropsMulti (obj1, obj2) {
        var args = argsToArray(arguments),
            deep = extractBoolFromArrayStart(args),
            arg0 = args.shift();

        // Extend object `0` with other objects
        args.forEach(function (arg) {
            if (!isObject(arg)) {
                return;
            }
            // Extend `arg0` with `arg`
            mergeOnProps(arg0, arg, deep);
        });

        return arg0;
    }
A strict version of sjl.extend;  I.e., only merges on properties existing on `obj1`.
@function module:sjl.mergeOnPropsMulti
@param obj1 {Object|Boolean} - If this param is set to a boolean then deep merge takes place.
@param [obj2,] {Object} - One or more objects to operate on.
@note In the case of `obj1` being a boolean method will expect 2 or more objects following param `obj1`.
@returns {*}