| '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; |
| }; |