Changeset 3841
- Timestamp:
- 11/17/07 04:25:22 (1 year ago)
- Location:
- trunk/jquery
- Files:
-
- 2 modified
-
src/core.js (modified) (2 diffs)
-
test/unit/core.js (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/jquery/src/core.js
r3839 r3841 517 517 deep = target; 518 518 target = arguments[1] || {}; 519 // skip the boolean and the target 520 i = 2; 519 521 } 522 523 // Handle case when target is a string or something (possible in deep copy) 524 if ( typeof target != "object" ) 525 target = {}; 520 526 521 527 // extend jQuery itself if only one argument is passed … … 531 537 for ( var name in options ) { 532 538 // Prevent never-ending loop 533 if ( target == options[ name ] )539 if ( target === options[ name ] ) 534 540 continue; 535 541 536 542 // Recurse if we're merging object values 537 543 if ( deep && typeof options[ name ] == "object" && target[ name ] && !options[ name ].nodeType ) 538 jQuery.extend( target[ name ], options[ name ] );544 target[ name ] = jQuery.extend( target[ name ], options[ name ] ); 539 545 540 546 // Don't bring in undefined values -
trunk/jquery/test/unit/core.js
r3839 r3841 812 812 813 813 test("$.extend(Object, Object)", function() { 814 expect(1 1);814 expect(14); 815 815 816 816 var settings = { xnumber1: 5, xnumber2: 7, xstring1: "peter", xstring2: "pan" }, … … 836 836 isObj( deep2.foo, deep2copy.foo, "Check if not deep2: options must not be modified" ); 837 837 equals( deep1.foo2, document, "Make sure that a deep clone was not attempted on the document" ); 838 839 var target = {}; 840 var recursive = { foo:target, bar:5 }; 841 jQuery.extend(true, target, recursive); 842 isObj( target, { bar:5 }, "Check to make sure a recursive obj doesn't go never-ending loop by not copying it over" ); 843 844 var ret = jQuery.extend(true, { foo: [] }, { foo: [0] } ); // 1907 845 ok( ret.foo.length == 1, "Check to make sure a value with coersion 'false' copies over when necessary to fix #1907" ); 846 847 var ret = jQuery.extend(true, { foo: "1,2,3" }, { foo: [1, 2, 3] } ); 848 ok( typeof ret.foo != "string", "Check to make sure values equal with coersion (but not actually equal) overwrite correctly" ); 838 849 839 850 var defaults = { xnumber1: 5, xnumber2: 7, xstring1: "peter", xstring2: "pan" },
