aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRick Waldron <waldron.rick@gmail.com>2013-03-06 15:11:20 -0500
committerRick Waldron <waldron.rick@gmail.com>2013-03-06 15:11:20 -0500
commit5c82d36f194a854a19f81bebd3ed1a6e7559c811 (patch)
tree014d790edef7c2653ea2770126469751141a207e
parent8d1c42296fefc4e79189b6c2d78a8a78fdd9576d (diff)
downloadjquery-5c82d36f194a854a19f81bebd3ed1a6e7559c811.tar.gz
jquery-5c82d36f194a854a19f81bebd3ed1a6e7559c811.zip
Revert 8d1c42296fefc4e79189b6c2d78a8a78fdd9576d
-rw-r--r--src/core.js11
-rw-r--r--test/unit/core.js43
2 files changed, 5 insertions, 49 deletions
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() {