]> 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:28:40 +0000 (03:28 -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

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

index 6183f703d4d767d86c630adf1f0f74c06efec730..7cf14c5c9fc6ad18c79fd00394a8b1a9dfebeefb 100644 (file)
@@ -672,6 +672,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 67fe9115b75a8af913421a822ad37911ecf27ec0..fe0f0c2dac621d1f78077f8bdf071bf46082d951 100644 (file)
@@ -1442,7 +1442,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 ) {
@@ -1458,6 +1458,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" );