]> source.dussan.org Git - jquery.git/commitdiff
2.0: Reduce isPlainObject
authorRick Waldron <waldron.rick@gmail.com>
Mon, 17 Dec 2012 22:30:38 +0000 (17:30 -0500)
committerRick Waldron <waldron.rick@gmail.com>
Wed, 26 Dec 2012 18:34:37 +0000 (13:34 -0500)
Signed-off-by: Rick Waldron <waldron.rick@gmail.com>
src/core.js

index 3859caa01d2b56d4180a1051a09aadf302e31c0d..96a68c2e660becb83705b989c85ec3782003110c 100644 (file)
@@ -417,32 +417,22 @@ jQuery.extend({
        },
 
        isPlainObject: function( obj ) {
-               // Must be an Object.
-               // Because of IE, we also have to check the presence of the constructor property.
-               // Make sure that DOM nodes and window objects don't pass through, as well
-               if ( !obj || jQuery.type(obj) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) {
+               // Not plain objects: params that are not [[Class]] "[object Object]", DOM nodes, window
+               if ( jQuery.type( obj ) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) {
                        return false;
                }
 
+               // Firefox 17+ will throw on host objects. ie window.location
                try {
-                       // Not own constructor property must be Object
                        if ( obj.constructor &&
-                               !core_hasOwn.call(obj, "constructor") &&
-                               !core_hasOwn.call(obj.constructor.prototype, "isPrototypeOf") ) {
+                                       !core_hasOwn.call( obj.constructor.prototype, "isPrototypeOf" ) ) {
                                return false;
                        }
                } catch ( e ) {
-                       // IE8,9 Will throw exceptions on certain host objects #9897
                        return false;
                }
 
-               // Own properties are enumerated firstly, so to speed up,
-               // if last one is own, then all properties are own.
-
-               var key;
-               for ( key in obj ) {}
-
-               return key === undefined || core_hasOwn.call( obj, key );
+               return obj === Object( obj );
        },
 
        isEmptyObject: function( obj ) {