From: Rick Waldron Date: Wed, 6 Mar 2013 20:11:20 +0000 (-0500) Subject: Revert 8d1c42296fefc4e79189b6c2d78a8a78fdd9576d X-Git-Tag: 2.0.0-beta3~56 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=5c82d36f194a854a19f81bebd3ed1a6e7559c811;p=jquery.git Revert 8d1c42296fefc4e79189b6c2d78a8a78fdd9576d --- diff --git a/src/core.js b/src/core.js index 39e68c4fc..cae3a90e3 100644 --- a/src/core.js +++ b/src/core.js @@ -422,11 +422,8 @@ 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 ) ) { @@ -445,11 +442,9 @@ jQuery.extend({ return false; } - // 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 ); + // 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; }, isEmptyObject: function( obj ) { diff --git a/test/unit/core.js b/test/unit/core.js index 793677711..7c840993b 100644 --- a/test/unit/core.js +++ b/test/unit/core.js @@ -296,9 +296,9 @@ test("type", function() { }); asyncTest("isPlainObject", function() { - expect(16); + expect(15); - var pass, iframe, doc, c, extended, + var pass, iframe, doc, fn = function() {}; // The use case that we want to match @@ -360,45 +360,6 @@ asyncTest("isPlainObject", function() { } catch(e) { window.iframeDone( Object, "iframes not supported" ); } - - // #13571 - function C() {} - C.prototype = { - x: 1 - }; - c = new C(); - - extended = jQuery.extend( true, {}, { - target: c - }); - - strictEqual( - extended.target, c, - "Instances, whose constructor defined its prototype by assigning a plain object, " + - "will lie about their true identity to preserve a broken user-code expectation" - ); - // - // The test above is broken and tests a broken feature, to support a misinformed - // assumption, as documented here: - // - // http://bugs.jquery.com/ticket/13571#comment:4 - // - // It will not pass if the object being assigned as the prototype - // has no properties: - // - // function C() {} - // C.prototype = {}; - // c = new C(); - - // extended = jQuery.extend( true, {}, { - // target: c - // }); - - // strictEqual( extended.target, c, "Undetectable, will fail every time" ); - // - // The solution is to reset the constructor property of your plain object prototypes. - // - // }); test("isFunction", function() {