jQuery.extend: Make overridden functions available to "Subclass"

jQuery.extend: Make overridden functions available to "Subclass"


Hey guys
I've added a little enhancement to jQuery on my local computer. Maybe
you consider it as usefull and integrate it in next jQuery release?
Anyways... it's just the ability to access overriden functions by
jQuery.extend. I've updated the jQuery.extend function with following
3 lines of code:
// Make overridden functions available to "Subclass"
if ( typeof( target[ name ] ) == "function" )
    target[ "__super_" + name ] = target[ name ];
And here the full function with the added code:
jQuery.extend = jQuery.fn.extend = function() {
    // copy reference to target object
    var target = arguments[0] || {}, i = 1, length = arguments.length,
deep = false, options;
    // Handle a deep copy situation
    if ( target.constructor == Boolean ) {
        deep = target;
        target = arguments[1] || {};
        // skip the boolean and the target
        i = 2;
    }
    // Handle case when target is a string or something (possible in deep
copy)
    if ( typeof target != "object" && typeof target != "function" )
        target = {};
    // extend jQuery itself if only one argument is passed
    if ( length == 1 ) {
        target = this;
        i = 0;
    }
    for ( ; i < length; i++ )
        // Only deal with non-null/undefined values
        if ( (options = arguments[ i ]) != null )
            // Extend the base object
            for ( var name in options ) {
                // Prevent never-ending loop
                if ( target === options[ name ] )
                    continue;
                // Recurse if we're merging object values
                if ( deep && options[ name ] && typeof options[ name ] == "object"
&& target[ name ] && !options[ name ].nodeType )
                    target[ name ] = jQuery.extend( target[ name ],
options[ name ] );
                // Don't bring in undefined values
                else if ( options[ name ] != undefined ) {
                    // Make overridden functions available to "Subclass"
                    if ( typeof( target[ name ] ) == "function" )
                        target[ "__super_" + name ] = target[ name ];
                    target[ name ] = options[ name ];
                }
            }
    // Return the modified object
    return target;
};