#12105 closed enhancement (duplicate)
jQuery.extend - extend model (custom object) by plain object (JSON response from server)
Reported by: | Owned by: | ||
---|---|---|---|
Priority: | undecided | Milestone: | None |
Component: | unfiled | Version: | git |
Keywords: | Cc: | ||
Blocked by: | Blocking: |
Description
Now jQuery.extend (deep copy) doesn't allow to extend custom object by server response (plain object from JSON)
On deep copy jQuery requires both property values to be plain objects to proceed recursively, otherwise it replaces value in target.
Could this be changed to requirement when target could be any object (not only plain) but other side must be plain?
// Recurse if we're merging plain objects or arrays if ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) { if ( copyIsArray ) { copyIsArray = false; clone = src && jQuery.isArray(src) ? src : []; } else { // CHNAGE FROM: //clone = src && jQuery.isPlainObject(src) ? src : {}; // CHNAGE TO: clone = !src || jQuery.type(src) !== "object" || src.nodeType || jQuery.isWindow( src ) ? {} : src; } // Never move original objects, clone them target[ name ] = jQuery.extend( deep, clone, copy ); // Don't bring in undefined values } else if ( copy !== undefined ) { target[ name ] = copy; }
Change History (2)
comment:1 Changed 11 years ago by
Resolution: | → duplicate |
---|---|
Status: | new → closed |
comment:2 Changed 11 years ago by
Note: See
TracTickets for help on using
tickets.
Duplicate of #10014.