aboutsummaryrefslogtreecommitdiffstats
path: root/src/core.js
diff options
context:
space:
mode:
Diffstat (limited to 'src/core.js')
-rw-r--r--src/core.js9
1 files changed, 8 insertions, 1 deletions
diff --git a/src/core.js b/src/core.js
index a89df3d4f..41e68268e 100644
--- a/src/core.js
+++ b/src/core.js
@@ -412,12 +412,17 @@ jQuery.extend({
},
isPlainObject: function( obj ) {
- // Not plain objects: params that are not [[Class]] "[object Object]", DOM nodes, window
+ // Not plain objects:
+ // - Any object or value whose internal [[Class]] property is not "[object Object]"
+ // - DOM nodes
+ // - window
if ( jQuery.type( obj ) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) {
return false;
}
// Support: Firefox >16
+ // The try/catch supresses exceptions thrown when attempting to access
+ // the "constructor" property of certain host objects, ie. |window.location|
try {
if ( obj.constructor &&
!core_hasOwn.call( obj.constructor.prototype, "isPrototypeOf" ) ) {
@@ -427,6 +432,8 @@ 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;
},