]> source.dussan.org Git - jquery-ui.git/commitdiff
Widget: Allow instantiation without the new keyword.
authorScott González <scott.gonzalez@gmail.com>
Sun, 23 Jan 2011 01:39:37 +0000 (20:39 -0500)
committerScott González <scott.gonzalez@gmail.com>
Sun, 23 Jan 2011 01:39:37 +0000 (20:39 -0500)
ui/jquery.ui.widget.js

index 1b00006a087d82b726ae503a48477463eab0bb30..ea182648151afaaa7b0317f647cf40b00e1f1428 100644 (file)
@@ -37,7 +37,13 @@ $.widget = function( name, base, prototype ) {
 
        $[ namespace ] = $[ namespace ] || {};
        $[ namespace ][ name ] = function( options, element ) {
+               // allow instantiation without "new" keyword
+               if ( !this._createWidget ) {
+                       return new $[ namespace ][ name ]( options, element );
+               }
+
                // allow instantiation without initializing for simple inheritance
+               // must use "new" keyword (the code above always passes args)
                if ( arguments.length ) {
                        this._createWidget( options, element );
                }
@@ -97,7 +103,7 @@ $.widget.bridge = function( name, object ) {
                                if ( instance ) {
                                        instance.option( options || {} )._init();
                                } else {
-                                       $.data( this, name, new object( options, this ) );
+                                       object( options, this );
                                }
                        });
                }
@@ -107,7 +113,13 @@ $.widget.bridge = function( name, object ) {
 };
 
 $.Widget = function( options, element ) {
+       // allow instantiation without "new" keyword
+       if ( !this._createWidget ) {
+               return new $[ namespace ][ name ]( options, element );
+       }
+
        // allow instantiation without initializing for simple inheritance
+       // must use "new" keyword (the code above always passes args)
        if ( arguments.length ) {
                this._createWidget( options, element );
        }