Skip to content

Commit 26bb970

Browse files
committed
Merge pull request #2068 from jridgewell/refine-pick
Avoid an arguments deopt
2 parents 1669e07 + 557b7e5 commit 26bb970

File tree

2 files changed

+9
-4
lines changed

2 files changed

+9
-4
lines changed

test/objects.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -200,6 +200,11 @@
200200
deepEqual(_.pick(data, function(val, key) {
201201
return this[key] === 3 && this === instance;
202202
}, instance), {c: 3}, 'function is given context');
203+
204+
ok(!_.has(_.pick({}, 'foo'), 'foo'), 'does not set own property if property not in object');
205+
_.pick(data, function(value, key, obj) {
206+
equal(obj, data, 'passes same object as third parameter of iteratee');
207+
});
203208
});
204209

205210
test('omit', function() {

underscore.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1013,12 +1013,12 @@
10131013
};
10141014

10151015
// Return a copy of the object only containing the whitelisted properties.
1016-
_.pick = function(obj, iteratee, context) {
1017-
var result = {}, keys;
1016+
_.pick = function(object, oiteratee, context) {
1017+
var result = {}, obj = object, iteratee, keys;
10181018
if (obj == null) return result;
1019-
if (_.isFunction(iteratee)) {
1019+
if (_.isFunction(oiteratee)) {
10201020
keys = _.allKeys(obj);
1021-
iteratee = optimizeCb(iteratee, context);
1021+
iteratee = optimizeCb(oiteratee, context);
10221022
} else {
10231023
keys = flatten(arguments, false, false, 1);
10241024
iteratee = function(value, key, obj) { return key in obj; };

0 commit comments

Comments
 (0)