Bug Tracker

Changeset 5358

Show
Ignore:
Timestamp:
04/30/08 00:09:55 (4 months ago)
Author:
aflesler
Message:

jquery core: extend() now supports deep + extending jquery itself
cached some vars and it proved to be faster.

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • trunk/jquery/src/core.js

    r5357 r5358  
    567567 
    568568    // extend jQuery itself if only one argument is passed 
    569     if ( length == 1 ) { 
     569    if ( length == i ) { 
    570570        target = this; 
    571         i = 0; 
     571        --i; 
    572572    } 
    573573 
     
    577577            // Extend the base object 
    578578            for ( var name in options ) { 
     579                var src = target[ name ], copy = options[ name ];  
     580                 
    579581                // Prevent never-ending loop 
    580                 if ( target === options[ name ] ) 
     582                if ( target === copy ) 
    581583                    continue; 
    582584 
    583585                // Recurse if we're merging object values 
    584                 if ( deep && options[ name ] && typeof options[ name ] == "object" && target[ name ] && !options[ name ].nodeType ) 
    585                     target[ name ] = jQuery.extend( deep, target[ name ], options[ name ] ); 
     586                if ( deep && copy && typeof copy == "object" && src && !copy.nodeType ) 
     587                    target[ name ] = jQuery.extend( deep, src, copy ); 
    586588 
    587589                // Don't bring in undefined values 
    588                 else if ( options[ name ] != undefined ) 
    589                     target[ name ] = options[ name ]; 
     590                else if ( copy != undefined ) 
     591                    target[ name ] = copy; 
    590592 
    591593            }