]> source.dussan.org Git - jquery.git/commitdiff
Event: Restore the `constructor` property on jQuery.Event prototype
authorDaniel Herman <daniel.c.herman@gmail.com>
Thu, 15 May 2014 16:26:20 +0000 (12:26 -0400)
committerRichard Gibson <richard.gibson@gmail.com>
Thu, 4 Sep 2014 07:29:16 +0000 (03:29 -0400)
The original definition of the jQuery.Event prototype was paving over the
`constructor` property which was causing jQuery.isPlainObject to
improperly report that an instance of jQuery.Event was a plain object.

Fixes #15090
Closes gh-1580

(cherry picked from commit b807aedb7fee321fb3aa5d156a5a256ab0634e2d)

src/event.js
test/unit/event.js

index 8c4543cb5c3f0fa740619ed00ff63e5dca7c7e69..54451306d83089975fd14e3b409011aa35f0db8c 100644 (file)
@@ -728,6 +728,7 @@ jQuery.Event = function( src, props ) {
 // jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding
 // http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html
 jQuery.Event.prototype = {
+       constructor: jQuery.Event,
        isDefaultPrevented: returnFalse,
        isPropagationStopped: returnFalse,
        isImmediatePropagationStopped: returnFalse,
index 8bb168a40d79f2e72879a9ce05a2d9b13cb10e13..fb3b75abc5d04c67d023698dd0d06442e585c9d6 100644 (file)
@@ -1511,7 +1511,7 @@ if ( window.onbeforeunload === null &&
 
 test("jQuery.Event( type, props )", function() {
 
-       expect(5);
+       expect(6);
 
        var event = jQuery.Event( "keydown", { keyCode: 64 }),
                        handler = function( event ) {
@@ -1527,6 +1527,8 @@ test("jQuery.Event( type, props )", function() {
 
        ok( "keyCode" in event, "Special 'keyCode' property exists" );
 
+       strictEqual( jQuery.isPlainObject( event ), false, "Instances of $.Event should not be identified as a plain object." );
+
        jQuery("body").on( "keydown", handler ).trigger( event );
 
        jQuery("body").off( "keydown" );