I constantly find myself passing config values to functions accessing them like this:
var arg1 = \'test1\'; if(isUndefined(config.args.arg1)){ arg1 = config.ar
try var options = extend(defaults, userOptions);
var options = extend(defaults, userOptions);
This way you get all the userOptions and fall back to defaults when they don't pass any options.
Note use any extend implementation you want.