mirror of
https://github.com/whoisclebs/lodash.git
synced 2026-02-04 00:57:48 +00:00
Bump to v4.17.5.
This commit is contained in:
44
defaults.js
44
defaults.js
@@ -1,7 +1,13 @@
|
||||
import apply from './_apply.js';
|
||||
import assignInWith from './assignInWith.js';
|
||||
import baseRest from './_baseRest.js';
|
||||
import customDefaultsAssignIn from './_customDefaultsAssignIn.js';
|
||||
import eq from './eq.js';
|
||||
import isIterateeCall from './_isIterateeCall.js';
|
||||
import keysIn from './keysIn.js';
|
||||
|
||||
/** Used for built-in method references. */
|
||||
var objectProto = Object.prototype;
|
||||
|
||||
/** Used to check objects for own properties. */
|
||||
var hasOwnProperty = objectProto.hasOwnProperty;
|
||||
|
||||
/**
|
||||
* Assigns own and inherited enumerable string keyed properties of source
|
||||
@@ -24,9 +30,35 @@ import customDefaultsAssignIn from './_customDefaultsAssignIn.js';
|
||||
* _.defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });
|
||||
* // => { 'a': 1, 'b': 2 }
|
||||
*/
|
||||
var defaults = baseRest(function(args) {
|
||||
args.push(undefined, customDefaultsAssignIn);
|
||||
return apply(assignInWith, undefined, args);
|
||||
var defaults = baseRest(function(object, sources) {
|
||||
object = Object(object);
|
||||
|
||||
var index = -1;
|
||||
var length = sources.length;
|
||||
var guard = length > 2 ? sources[2] : undefined;
|
||||
|
||||
if (guard && isIterateeCall(sources[0], sources[1], guard)) {
|
||||
length = 1;
|
||||
}
|
||||
|
||||
while (++index < length) {
|
||||
var source = sources[index];
|
||||
var props = keysIn(source);
|
||||
var propsIndex = -1;
|
||||
var propsLength = props.length;
|
||||
|
||||
while (++propsIndex < propsLength) {
|
||||
var key = props[propsIndex];
|
||||
var value = object[key];
|
||||
|
||||
if (value === undefined ||
|
||||
(eq(value, objectProto[key]) && !hasOwnProperty.call(object, key))) {
|
||||
object[key] = source[key];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return object;
|
||||
});
|
||||
|
||||
export default defaults;
|
||||
|
||||
Reference in New Issue
Block a user