From 8d1c42296fefc4e79189b6c2d78a8a78fdd9576d Mon Sep 17 00:00:00 2001 From: Rick Waldron Date: Wed, 6 Mar 2013 14:42:24 -0500 Subject: Fixes #13571. jQuery.isPlainObject 1.9.x compatibility Signed-off-by: Rick Waldron --- src/core.js | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/core.js b/src/core.js index cae3a90e3..39e68c4fc 100644 --- a/src/core.js +++ b/src/core.js @@ -422,8 +422,11 @@ jQuery.extend({ }, isPlainObject: function( obj ) { + var key; // Not plain objects: // - Any object or value whose internal [[Class]] property is not "[object Object]" + // ...Unless it was a constructor, whose prototype property was paved over by + // by a plain object at its declaration. #13571 // - DOM nodes // - window if ( jQuery.type( obj ) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) { @@ -442,9 +445,11 @@ jQuery.extend({ return false; } - // If the function hasn't returned already, we're confident that - // |obj| is a plain object, created by {} or constructed with new Object - return true; + // Own properties are enumerated firstly, so to speed up, + // if last one is own, then all properties are own. + for ( key in obj ) {} + + return key === undefined || core_hasOwn.call( obj, key ); }, isEmptyObject: function( obj ) { -- cgit v1.2.3