Widget: Only create _super and _superApply once per method, then assign on every execution.

This commit is contained in:
Scott González 2011-02-10 21:32:33 -05:00
parent 6096aed0a3
commit 92bae28dea

View File

@ -58,15 +58,19 @@ $.widget = function( name, base, prototype ) {
basePrototype.options = $.extend( true, {}, basePrototype.options ); basePrototype.options = $.extend( true, {}, basePrototype.options );
$.each( prototype, function( prop, value ) { $.each( prototype, function( prop, value ) {
if ( $.isFunction( value ) ) { if ( $.isFunction( value ) ) {
prototype[ prop ] = function() { prototype[ prop ] = (function() {
this._super = function( method ) { var _super = function( method ) {
return base.prototype[ method ].apply( this, slice.call( arguments, 1 ) ); return base.prototype[ method ].apply( this, slice.call( arguments, 1 ) );
}; };
this._superApply = function( method, args ) { var _superApply = function( method, args ) {
return base.prototype[ method ].apply( this, args ); return base.prototype[ method ].apply( this, args );
}; };
return function() {
this._super = _super;
this._superApply = _superApply;
return value.apply( this, arguments ); return value.apply( this, arguments );
}; };
}());
} }
}); });
$[ namespace ][ name ].prototype = $.extend( true, basePrototype, { $[ namespace ][ name ].prototype = $.extend( true, basePrototype, {