]> source.dussan.org Git - jquery.git/commitdiff
jquery core: fixed deep extend of objects. Closes #1562 & #2820.
authorAriel Flesler <aflesler@gmail.com>
Wed, 14 May 2008 19:45:31 +0000 (19:45 +0000)
committerAriel Flesler <aflesler@gmail.com>
Wed, 14 May 2008 19:45:31 +0000 (19:45 +0000)
src/core.js

index 8743f05c49e54dc50ce3be0e965a58d83e32e8a3..98a0dc4bd5f3fd554465146f5c35b28ee5d6b658 100644 (file)
@@ -579,8 +579,11 @@ jQuery.extend = jQuery.fn.extend = function() {
                                        continue;
 
                                // Recurse if we're merging object values
-                               if ( deep && copy && typeof copy == "object" && src && !copy.nodeType )
-                                       target[ name ] = jQuery.extend( deep, src, copy );
+                               if ( deep && copy && typeof copy == "object" && !copy.nodeType )
+                                       target[ name ] = jQuery.extend( deep, 
+                                               // Never move original objects, clone them
+                                               src || ( copy.length != null ? [ ] : { } )
+                                       , copy );
 
                                // Don't bring in undefined values
                                else if ( copy !== undefined )