Side navigation
#6145 closed bug (wontfix)
Opened February 22, 2010 06:01AM UTC
Closed November 19, 2010 09:55PM UTC
Last modified January 01, 2014 01:09AM UTC
Extend does not copy property getters
| Reported by: | arobinson | Owned by: | |
|---|---|---|---|
| Priority: | undecided | Milestone: | 1.4.2 | 
| Component: | core | Version: | 1.4.1 | 
| Keywords: | extend | Cc: | |
| Blocked by: | Blocking: | 
Description
jQuery.extend copies property getter return values, not their code.
To reproduce:
var a = { get test() { return "hi"; }};
var b = $.extend({}, a);
// Correctly prints out the function:
console.log(a.__lookupGetter__("test"));
// Incorrectly is undefined:
console.log(b.__lookupGetter__("test"));
Attachments (0)
Change History (3)
Changed November 19, 2010 09:55PM UTC by comment:1
| priority: | → undecided | 
|---|---|
| resolution: | → wontfix | 
| status: | new → closed | 
Changed January 01, 2014 12:26AM UTC by comment:2
Worth reopening? Getters and setters are much more useful now than 3 years ago.
Changed January 01, 2014 01:09AM UTC by comment:3
This is not in scope for the applications of $.extend. Create your own or use libraries like underscore/lodash.
Not all browsers supported by jQuery support ES5. Additionally, I doubt so many people are using getter/setters at this point that it is worth adding to core. Feel free to make your own
$.extendthat usesgetOwnPropertyDescriptorto do this, though.