From: Rick Waldron Date: Mon, 24 Dec 2012 15:54:11 +0000 (-0500) Subject: Explanations for each step of isPlainObject X-Git-Tag: 2.0.0b1~57^2 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=refs%2Fpull%2F1098%2Fhead;p=jquery.git Explanations for each step of isPlainObject Signed-off-by: Rick Waldron --- 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; },