blob: fac447f6e53e82dc0354e662972772aa7e8f11d0 [file] [log] [blame]
Leo Repp58b9f112021-11-22 11:57:47 +01001'use strict';
2
3var each = require('array-each');
4var slice = require('array-slice');
5var forOwn = require('for-own');
6var isObject = require('isobject');
7
8/**
9 * Extends the `target` object with properties of one or
10 * more additional `objects`
11 *
12 * @name .defaults
13 * @param {Object} `target` The target object. Pass an empty object to shallow clone.
14 * @param {Object} `objects`
15 * @return {Object}
16 * @api public
17 */
18
19module.exports = function defaults(target, objects) {
20 if (target == null) {
21 return {};
22 }
23
24 each(slice(arguments, 1), function(obj) {
25 if (isObject(obj)) {
26 forOwn(obj, function(val, key) {
27 if (target[key] == null) {
28 target[key] = val;
29 }
30 });
31 }
32 });
33
34 return target;
35};