Object.getOwnPropertyDescriptors(O) ? // plural

Andrea Giammarchi andrea.giammarchi at gmail.com
Tue Mar 4 09:48:35 PST 2014


yes, because `Object.getOwnPropertyDescriptor(O, k)` accepts both
`propertyName` and `Symbol` as second argument. The plural, and to be
consistent with the shallowCopy example, should return a list of both.

This is also because all descriptors returned by
`Object.getOwnPropertySymbols` can be used same way
`Object.getOwnPropertyNames` ... so, unless `Object.defineProperty(O, k,
d)` does not accept `k` as `Symbol` (basically breaking this proposal via
`Object.create`) I don't see why the plural version should not return
descriptors for both kind of properties.

My 2 cents


On Tue, Mar 4, 2014 at 9:38 AM, Rick Waldron <waldron.rick at gmail.com> wrote:

> Question: should the returned array include property descriptors for
> properties whose key is a symbol?
>
> Rick
>
>
>
> On Tue, Mar 4, 2014 at 12:34 PM, Rick Waldron <waldron.rick at gmail.com>wrote:
>
>>
>>
>>
>> On Tue, Mar 4, 2014 at 12:30 PM, Andrea Giammarchi <
>> andrea.giammarchi at gmail.com> wrote:
>>
>>>  Apparently this triggered an @rwaldron which seems to be
>>> super-effective
>>>
>>> In agenda for April's meeting.
>>>
>>
>> Yep: https://github.com/tc39/agendas/blob/master/2014/04.md
>>
>> Going to try, but it's so late in the game that I really can't promise
>> anything--I think it's simple enough that we can get away with it. I will
>> write up a proposed normative spec (likely based on Andrea's work) before I
>> present, I've found that's a pretty powerful way to make a case for late
>> additions ;)
>>
>>
>> Rick
>>
>>
>>>
>>> Thanks
>>>
>>> Sent from my Windows Phone
>>>  ------------------------------
>>> From: C. Scott Ananian <cscott at cscott.net>
>>> Sent: 3/4/2014 6:16
>>> To: Andrea Giammarchi <andrea.giammarchi at gmail.com>
>>> Cc: es-discuss at mozilla.org list <es-discuss at mozilla.org>
>>> Subject: Re: Object.getOwnPropertyDescriptors(O) ? // plural
>>>
>>> Have you filed a bugzilla ticket for this? That seems the best way to
>>> ensure it will get discussed at the next TC39 meeting and resolved one way
>>> or the other.
>>>   --scott
>>> On Mar 3, 2014 8:44 PM, "Andrea Giammarchi" <andrea.giammarchi at gmail.com>
>>> wrote:
>>>
>>>> up ?
>>>>
>>>>
>>>> On Sun, Mar 2, 2014 at 5:43 PM, Andrea Giammarchi <
>>>> andrea.giammarchi at gmail.com> wrote:
>>>>
>>>>> Brandon I take your answer as +1, thanks.
>>>>>
>>>>> I've also "gisted" a possible/basic polyfill here:
>>>>> https://gist.github.com/WebReflection/9317065
>>>>>
>>>>> Cheers
>>>>>
>>>>>
>>>>> On Sun, Mar 2, 2014 at 5:16 PM, Andrea Giammarchi <
>>>>> andrea.giammarchi at gmail.com> wrote:
>>>>>
>>>>>> actually, since `Object.getOwnPropertyDescriptor` accepts `Symbols`
>>>>>> too as second argument, the equivalent with current ES6 would be even more
>>>>>> prolix than that
>>>>>>
>>>>>> ```javascript
>>>>>>
>>>>>> var shallowCopy = Object.create(
>>>>>>   Object.getPrototypeOf(originalObject),
>>>>>>    Object.getOwnPropertyNames(originalObject).concat(
>>>>>>   Object.getOwnPropertySymbols(originalObject)
>>>>>>   ).reduce(function (descriptors, name) {
>>>>>>     descriptors[name] = Object.getOwnPropertyDescriptor(
>>>>>>       originalObject, name
>>>>>>     );
>>>>>>     return descriptors;
>>>>>>   }, {})
>>>>>> );
>>>>>>
>>>>>> ```
>>>>>>
>>>>>> assuming Symbols will be definable through descriptors ... all this
>>>>>> VS
>>>>>>
>>>>>> ```javascript
>>>>>> var shallowCopy = Object.create(
>>>>>>   Object.getPrototypeOf(originalObject),
>>>>>>   Object.getOwnPropertyDescriptors(originalObject)
>>>>>> );
>>>>>> ```
>>>>>>
>>>>>> which I believe is a win.
>>>>>>
>>>>>> Thanks
>>>>>>
>>>>>>
>>>>>> On Sun, Mar 2, 2014 at 5:01 PM, Andrea Giammarchi <
>>>>>> andrea.giammarchi at gmail.com> wrote:
>>>>>>
>>>>>>> I wonder if by any chance this could sneak into ES6 ... we have only
>>>>>>> singular version here:
>>>>>>>
>>>>>>> https://people.mozilla.org/~jorendorff/es6-draft.html#sec-object.getownpropertydescriptor
>>>>>>>
>>>>>>> **rationale**
>>>>>>> The easiest way to create a shallow copy of a generic object could
>>>>>>> be:
>>>>>>>
>>>>>>> ```javascript
>>>>>>> var shallowCopy = Object.create(
>>>>>>>   Object.getPrototypeOf(originalObject),
>>>>>>>   Object.getOwnPropertyDescriptors(originalObject)
>>>>>>> );
>>>>>>> ```
>>>>>>>
>>>>>>> Today what we have to do this instead:
>>>>>>>
>>>>>>> ```javascript
>>>>>>> var shallowCopy = Object.create(
>>>>>>>   Object.getPrototypeOf(originalObject),
>>>>>>>   Object.getOwnPropertyNames(originalObject).reduce(
>>>>>>>   function (descriptors, name) {
>>>>>>>     descriptors[name] = Object.getOwnPropertyDescriptor(
>>>>>>>       originalObject, name
>>>>>>>     );
>>>>>>>     return descriptors;
>>>>>>>   }, {})
>>>>>>> );
>>>>>>> ```
>>>>>>>
>>>>>>> I see latter pattern as sort of unnecessary overhead that could be
>>>>>>> also much faster in core and polyfilled in the meanwhile.
>>>>>>>
>>>>>>> Thoughts ?
>>>>>>>
>>>>>>> Cheers
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>
>>>>>
>>>>
>>>> _______________________________________________
>>>> es-discuss mailing list
>>>> es-discuss at mozilla.org
>>>> https://mail.mozilla.org/listinfo/es-discuss
>>>>
>>>>
>>> _______________________________________________
>>> es-discuss mailing list
>>> es-discuss at mozilla.org
>>> https://mail.mozilla.org/listinfo/es-discuss
>>>
>>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.mozilla.org/pipermail/es-discuss/attachments/20140304/33b0dd43/attachment-0001.html>


More information about the es-discuss mailing list