diff options
Diffstat (limited to 'node_modules/object.defaults/mutable.js')
-rw-r--r-- | node_modules/object.defaults/mutable.js | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/node_modules/object.defaults/mutable.js b/node_modules/object.defaults/mutable.js new file mode 100644 index 000000000..fac447f6e --- /dev/null +++ b/node_modules/object.defaults/mutable.js @@ -0,0 +1,35 @@ +'use strict'; + +var each = require('array-each'); +var slice = require('array-slice'); +var forOwn = require('for-own'); +var isObject = require('isobject'); + +/** + * Extends the `target` object with properties of one or + * more additional `objects` + * + * @name .defaults + * @param {Object} `target` The target object. Pass an empty object to shallow clone. + * @param {Object} `objects` + * @return {Object} + * @api public + */ + +module.exports = function defaults(target, objects) { + if (target == null) { + return {}; + } + + each(slice(arguments, 1), function(obj) { + if (isObject(obj)) { + forOwn(obj, function(val, key) { + if (target[key] == null) { + target[key] = val; + } + }); + } + }); + + return target; +}; |