Side navigation
#14838 closed bug (notabug)
Opened March 02, 2014 12:47AM UTC
Closed March 02, 2014 07:34PM UTC
Extend maintains reference to jQuery objects
Reported by: | Mottie | Owned by: | |
---|---|---|---|
Priority: | undecided | Milestone: | None |
Component: | unfiled | Version: | 1.11.0-rc1 |
Keywords: | Cc: | ||
Blocked by: | Blocking: |
Description
When extending a simple object which contains a jQuery object, the copy maintains a reference to the original object (demo).
var obj = { test: $('#test1') }, copy = $.extend(true, {}, obj); // copy maintains reference to obj copy.test.addClass('red');
To get around this issue, I had to specifically clone the jQuery object, instead of extending the object.
var obj = { test: $('#test2') }, copy = {}; // reference is not maintained copy.test = obj.test.clone().addClass('red');
I read through the documentation and found this note on object wrappers
On a deep extend, Object and Array are extended, but object wrappers on primitive types such as String, Boolean, and Number are not.
If this does apply to this case, and this need falls outside of the extend function's behavior, then I guess I am not understanding the wording of the above statement.
This issue occurs in all versions of jQuery, all the way back to v1.2.6.
Attachments (0)
Change History (1)
Changed March 02, 2014 07:34PM UTC by comment:1
resolution: | → notabug |
---|---|
status: | new → closed |
This is intended behavior, see explanation here: http://jsfiddle.net/rwaldron/5s7Nk/