On May 8, 2014, at 1:25 PM, John-David Dalton wrote:
> ES6 additions like Object.assign use [[OwnPropertyKeys]] for getting the keys
> of `source` objects. This helps avoid the method gotchas faced by developers
> previously with things like `Object.prototype.writable = true` and
> `Object.defineProperty(o, 'foo', { value: 'bar' })`.
>
> See
> https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/defineProperty#Description
> (bottom of section)
>
> "Bear in mind that these options are not necessarily own properties so, if
> inherited, will be considered too. In order to ensure these defaults are
> preserved you might freeze the Object.prototype upfront, specify all options
> explicitly, or point to null as __proto__ property."
>
> It's the reason I pre-populate my descriptor attributes with false even
> though false is the default. See
> https://github.com/lodash/lodash/blob/2.4.1/dist/lodash.js#L112-L117
>
> With methods like Object.assign using [[OwnPropertyKeys]] does it make sense
> to make things like ToPropertyDescriptor use [[HasOwnProperty]] too. I think
> it would be a win for consistency and dev use.
>
> Thoughts?
some prior discussions on this topic (or related):
http://esdiscuss.org/topic/nuking-misleading-properties-in-object-getownpropertydescriptor
http://www.esdiscuss.org/topic/object-prototype-get-bye-bye-object-defineproperty
http://esdiscuss.org/topic/property-descriptors-as-es6-maps
_______________________________________________
es-discuss mailing list
[email protected]
https://mail.mozilla.org/listinfo/es-discuss