Combine default parameters and destructuring for a compact version of the defaults / overrides pattern.
function foo ({
bar = 'no',
baz = 'works!'
} = {}) {
return (`${bar}, ${baz}`);
}
console.log(foo({
bar: 'yay'
})); // logs 'yay, works!'
Equivalent to ES5:
This bit needs to be polyfilled, Or use $.extend(), _.extend(), lodash/object/assign aka _.assign() or equivalent.
var assign = Object.assign;
var defaults2 = {
bar: 'no',
baz: 'works!'
};
function foo2 (options) {
var settings = assign({}, defaults2, options),
bar = settings.bar,
baz = settings.baz;
return (bar + ', ' +baz);
}
console.log(foo2({
bar: 'yay'
})); // logs 'yay, works!'
Gist written for How to Use ES6 for Isomorphic JavaScript Apps
_.merge is preferred, isn't it?
https://blog.mariusschulz.com/2015/03/30/combining-settings-objects-with-lodash-assign-or-merge
And does the pitfall pointed out there affect your solution? I'm not sure because my mind is still blown. ;)