soft-extend
Version:
Non-destructive extend. Just appends new properties to an object, keeping old ones.
29 lines (25 loc) • 627 B
JavaScript
/**
* Append all not-existing props to the initial object
*
* @return {[type]} [description]
*/
module.exports = function softExtend(){
var args = [].slice.call(arguments);
var res = args[0];
var l = args.length;
if (typeof res !== 'object') throw Error('Bad argument');
for (var i = 1, l = args.length, obj; i < l; i++) {
obj = args[i];
if (typeof obj === 'object') {
for (var prop in obj) {
if (res[prop] === undefined) {
res[prop] = obj[prop];
}
else if (typeof res[prop] === 'object') {
softExtend(res[prop], obj[prop])
}
}
}
}
return res;
};