Opened 16 years ago
Closed 16 years ago
#1028 closed enhancement (fixed)
.extend() recursively
Reported by: | vmx | Owned by: | john |
---|---|---|---|
Priority: | major | Milestone: | 1.1.4 |
Component: | core | Version: | 1.1.3 |
Keywords: | Cc: | ||
Blocked by: | Blocking: |
Description (last modified by )
extend() doesn't go through the properties recursively. For the following case:
var a = {prop1: {prop1a: "1a", prop2a: "5a"}}; var b = {prop1: {prop1a: "1b"}}; $.extend(a, b);
you would expect the result:
a = {prop1: {prop1a: "1b", prop2a: "5a"}
but the result currently is:
a = {prop1: {prop1a: "1b"}
It copies (overwrites) the property "prop1" from "b" wihthout keeping "prop2a" from "a".
This code snipped fixes the bug (just replace the while loop in "jQuery.extend" with this code)
while (prop = arguments[a++]) // Extend the base object for ( var i in prop ) { // prevent endless inheritances/loops if (target == prop[i]) continue; // extend recursively if current prop is an object, and // target has props of the same name if (typeof prop[i] == 'object' && target[i]) jQuery.extend(target[i],prop[i]); else target[i] = prop[i]; }
Change History (5)
comment:1 Changed 16 years ago by
Type: | bug → enhancement |
---|
comment:2 Changed 16 years ago by
Description: | modified (diff) |
---|---|
need: | → Review |
Owner: | set to john |
comment:3 Changed 16 years ago by
Milestone: | 1.1.3 → 1.1.4 |
---|---|
Resolution: | → fixed |
Status: | new → closed |
Version: | 1.1.2 → 1.1.3 |
comment:4 Changed 16 years ago by
Resolution: | fixed |
---|---|
Status: | closed → reopened |
Fails violently with the dimensions plugin - I figured something like this would happen, need to make it an optional argument.
comment:5 Changed 16 years ago by
Resolution: | → fixed |
---|---|
Status: | reopened → closed |
Fixed in SVN rev [2816-2817].
Note: See
TracTickets for help on using
tickets.
Fixed in SVN rev [2783].