From 22aa02895e106369ea3107de3eecdd01dd9c48b5 Mon Sep 17 00:00:00 2001 From: John-David Dalton Date: Wed, 30 Oct 2013 09:24:25 -0700 Subject: [PATCH] Add `propertyIsEnumerable` check to the `_.isArguments` fallback. [closes #382] --- lodash.js | 2 +- test/test.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/lodash.js b/lodash.js index 3a640f00e..787ed8743 100644 --- a/lodash.js +++ b/lodash.js @@ -1857,7 +1857,7 @@ if (!support.argsClass) { isArguments = function(value) { return value && typeof value == 'object' && typeof value.length == 'number' && - hasOwnProperty.call(value, 'callee') || false; + hasOwnProperty.call(value, 'callee') && propertyIsEnumerable.call(value, 'callee') || false; }; } diff --git a/test/test.js b/test/test.js index 5af6c6edf..b2516b2ea 100644 --- a/test/test.js +++ b/test/test.js @@ -3088,7 +3088,7 @@ strictEqual(_.isArguments(true), false); strictEqual(_.isArguments(new Date), false); strictEqual(_.isArguments(_), false); - strictEqual(_.isArguments({ '0': 1, 'length': 1 }), false); + strictEqual(_.isArguments({ '0': 1, 'callee': _.noop, 'length': 1 }), false); strictEqual(_.isArguments(0), false); strictEqual(_.isArguments(/x/), false); strictEqual(_.isArguments('a'), false);