diff --git a/src/core.js b/src/core.js index 3859caa01..96a68c2e6 100644 --- a/src/core.js +++ b/src/core.js @@ -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 ) {