X-Git-Url: http://git.asbjorn.it/?a=blobdiff_plain;ds=sidebyside;f=src%2Fcore.js;h=b036db89587a37ba3150b3d0e8f0d67ee17a1417;hb=bf8f3fe0942cb3d2583f0965e44594088a38ccef;hp=d12d5d3ace2004fe1104bb7ed6a264c6bc051eae;hpb=e2ef3df86d5f54274bf2b779d882c30aa0886bfe;p=jquery.git diff --git a/src/core.js b/src/core.js index d12d5d3..b036db8 100644 --- a/src/core.js +++ b/src/core.js @@ -516,8 +516,14 @@ jQuery.extend = jQuery.fn.extend = function() { 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" ) + target = {}; + // extend jQuery itself if only one argument is passed if ( length == 1 ) { target = this; @@ -530,12 +536,12 @@ jQuery.extend = jQuery.fn.extend = function() { // Extend the base object for ( var name in options ) { // Prevent never-ending loop - if ( target == options[ name ] ) + if ( target === options[ name ] ) continue; // Recurse if we're merging object values if ( deep && typeof options[ name ] == "object" && target[ name ] && !options[ name ].nodeType ) - jQuery.extend( target[ name ], options[ name ] ); + target[ name ] = jQuery.extend( target[ name ], options[ name ] ); // Don't bring in undefined values else if ( options[ name ] != undefined )