From fd80e096ea50bc296bff42c11fb6cdc361c034e9 Mon Sep 17 00:00:00 2001 From: John-David Dalton Date: Fri, 17 Aug 2012 00:10:03 -0700 Subject: [PATCH] Remove `noArgsClass` check from `isPlainObject`. Former-commit-id: bab7a68e8eaa21679b33b2ab70a9f8e47758ebc1 --- lodash.js | 4 ++-- test/test.js | 19 +++++++++++++++++-- 2 files changed, 19 insertions(+), 4 deletions(-) diff --git a/lodash.js b/lodash.js index e3be19c51..3bc9184cb 100644 --- a/lodash.js +++ b/lodash.js @@ -749,9 +749,9 @@ * @returns {Boolean} Returns `true` if the `value` is a plain `Object` object, else `false`. */ function isPlainObject(value) { - // avoid non-objects and false positives for `arguments` objects in IE < 9 + // avoid non-objects and false positives for `arguments` objects var result = false; - if (!(value && typeof value == 'object') || (noArgsClass && isArguments(value))) { + if (!(value && typeof value == 'object') || isArguments(value)) { return result; } // IE < 9 presents DOM nodes as `Object` objects except they have `toString` diff --git a/test/test.js b/test/test.js index 4c33bbdae..c47a34237 100644 --- a/test/test.js +++ b/test/test.js @@ -859,6 +859,8 @@ QUnit.module('lodash.merge'); (function() { + var args = arguments; + test('should merge `source` into the destination object', function() { var stooges = [ { 'name': 'moe' }, @@ -918,7 +920,20 @@ deepEqual(_.merge(object, source), [shadowed]); }); - }()); + + test('should not treat `arguments` objects as plain objects', function() { + var object = { + 'args': args + }; + + var source = { + 'args': { '3': 4 } + }; + + var actual = _.merge(object, source); + equal(_.isArguments(actual.args), false); + }); + }(1, 2, 3)); /*--------------------------------------------------------------------------*/ @@ -1112,7 +1127,7 @@ QUnit.module('lodash.sortBy'); (function() { - test('should perform a stable sort', function() { + test('should perform a stable sort (test in IE > 8, Opera, and V8)', function() { function Pair(x, y) { this.x = x; this.y = y;