Bug Tracker

Opened 10 years ago

Closed 8 years ago

Last modified 8 years ago

#4227 closed bug (worksforme)

$.extend erratic behavior with objects that have a length property

Reported by: dmethvin Owned by:
Priority: low Milestone: 1.4
Component: core Version: 1.3.2
Keywords: Cc:
Blocked by: Blocking:

Description

From the jQuery Google Group: http://groups.google.com/group/jquery-en/browse_frm/thread/31e97b11082d2633#

Hello,

It seems that it's not safe to use "length" as a nested object property if I want to use jquery.extend. Is this a know issue?

$.extend(true, {},{"prop":{"length":"-1"}});

thanks,

-Morgan

Attachments (1)

extend_object_with_length.patch (1.7 KB) - added by JDay 10 years ago.
Fix and testcase. Use jQuery.isArray() istead of checking for a length property.

Download all attachments as: .zip

Change History (5)

Changed 10 years ago by JDay

Fix and testcase. Use jQuery.isArray() istead of checking for a length property.

comment:1 Changed 10 years ago by dmethvin

That would only handle true Array objects. I think the goal may have been to have $.extend be able to take array-like objects and treat them like Array, e.g., Function.arguments and DOM nodeList. It's worth thinking about so I'll leave the ticket open for further discussion.

comment:2 Changed 10 years ago by JDay

"Array-like" objects can still be handled and should work as before. Where is the value in making a "true" Array out of an object that wasn't an array to begin with?

comment:3 Changed 8 years ago by Rick Waldron

Resolution: worksforme
Status: newclosed

Additional testing:

http://jsfiddle.net/rwaldron/nqnBr/2/

I don't think there is any misbehaviour here. I'm closing, if the author wants to reopen, then we can do so with valid reason.

comment:4 Changed 8 years ago by Rick Waldron

Priority: minorlow
Note: See TracTickets for help on using tickets.