From 913778d5ab25039f5838cf6359516fdb61d9f09f Mon Sep 17 00:00:00 2001 From: octref Date: Tue, 3 Mar 2015 00:00:09 -0500 Subject: [PATCH] Let `createAssigner` get correct customizer When `_.defaults` is invoked using `_.reduce` / `_.reduceRight` `createAssigner` discards the customizer, so the effect is `_.assign` but not `_.defaults` ``` _.reduce([{ 'user': 'barney' }, { 'user': 'fred' }], _.defaults) // -> {user: "fred"} _.reduceRight([{ 'user': 'barney' }, { 'user': 'fred' }], _.defaults) // -> {user: "barney"} // Fixed _.reduce([{ 'user': 'barney' }, { 'user': 'fred' }], _.defaults) // -> {user: "barney"} _.reduceRight([{ 'user': 'barney' }, { 'user': 'fred' }], _.defaults) // -> {user: "fred"} ``` --- lodash.src.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/lodash.src.js b/lodash.src.js index 1d0edab40..1c9cd2c1e 100644 --- a/lodash.src.js +++ b/lodash.src.js @@ -3167,6 +3167,9 @@ return object; } if (length > 3 && isIterateeCall(arguments[1], arguments[2], arguments[3])) { + if (typeof arguments[length - 1] == 'function') { + customizer = arguments[--length]; + } length = 2; } // Juggle arguments.