*sigh* ignore me I completely misread the initial email. Serves me right for skim reading and speed replying during lunch.
On Thu, Dec 18, 2014 at 1:31 PM, Andy Earnshaw <[email protected]> wrote: > > Oops, misfire. The rest of that: > > function shadow(obj, props) { > var ret = Object.create(obj); > > for (var k in props) > ret[k] = props[k] > > return ret; > } > > // Elsewhere... > function defineSomeProps (obj) { > var defaults = { enumerable: true, writable: true, configurable: > true }; > > Object.defineProperties(obj, { > foo1: shadow(defaults, { value: 'bar1' })), > foo2: shadow(defaults, { value: 'bar2' })), > foo3: shadow(defaults, { value: 'bar3' })), > // etc... > }); > } > > If people have a generic shadow() function that creates an object and > copies properties to it (less verbosely than just using Object.create), > they could be tempted to use it to create ES3-style EWC properties. > > On Thu, Dec 18, 2014 at 1:24 PM, Andy Earnshaw <[email protected]> > wrote: >> >> Can we be sure nobody's ever written something like this: >> >> function shadow(obj, props) { >> var ret = Object.create(obj); >> } >> >> On Thu, Dec 18, 2014 at 10:08 AM, Andrea Giammarchi < >> [email protected]> wrote: >> >>> My main point is that everything you get from >>> `Object.getOwnPropertyDescriptor`, beside undefined or possible abrupt >>> errors, will have own properties. >>> >>> Even es5-shim/sham has been checking own properties for years [1] so I >>> am pretty confident nothing will break 'cause own properties is what >>> developers always expected and what they've always used despite specs. >>> >>> Again it's clear the world can live with these possibly inherited >>> descriptors properties but it feels very wrong on the practical level. Too >>> bad if there won't be ever a fix [2] >>> >>> [1] https://github.com/es-shims/es5-shim/issues/211#event-208821479 now >>> fixed >>> >>> [2] would a new Descriptor({ownproperties:"only"}) instance be ever >>> considered ? >>> >>> >>> >>> On Wed, Dec 17, 2014 at 8:37 PM, Allen Wirfs-Brock < >>> [email protected]> wrote: >>>> >>>> >>>> On Dec 17, 2014, at 10:30 AM, Andrea Giammarchi wrote: >>>> >>>> Actually simplifying as proposal: does everyone agree that if a >>>> descriptor.[[Value]] is own property no further checks on inherited [[Get]] >>>> and [[Set]], or generally speaking Accessor Property related checks, should >>>> be made ? >>>> >>>> This would already fix the `Object.prototype.get` or `.set` case since >>>> I believe nobody ever used an inherited `value` property on purpose for >>>> descriptors ... or is it? >>>> >>>> It will keep `enumerable` and `writable` still potentially problematic >>>> but at least the following code would never fail: >>>> >>>> ```js >>>> Object.prototype.get = function () {}; Object.defineProperty( >>>> Object.prototype, 'toString', Object.getOwnPropertyDescriptor( >>>> Object.prototype, 'toString' ) ); >>>> >>>> ``` >>>> >>>> Thanks again for any sort of outcome (or clarification on when and if >>>> this will ever be fixed) >>>> >>>> >>>> I'm not sure what you are actually asking. All specified internal uses >>>> of property descriptor objets should pas through ToPropertyDescriptor ( >>>> http://people.mozilla.org/~jorendorff/es6-draft.html#sec-topropertydescriptor >>>> ) which will throw if there is any conflict between get/set and own >>>> value/writable properties, regardless of whether they are own or inherited. >>>> (If you know of any uses of such descriptor object in the ES6 spec that >>>> don't do this validation, please file a bug). >>>> >>>> If you want to enforce the same semantics on you ES-level uses of >>>> descriptor objects you need to write a ES level implementation of the >>>> checks performed by ToPropertyDescriptor. >>>> >>>> I can see various ways we might improve the specified processing of >>>> property descriptor objects but those would generally be breaking changes >>>> and we would have to consider the possible impact of such changes before >>>> proceeding with them. >>>> >>>> Allen >>>> >>> >>> _______________________________________________ >>> es-discuss mailing list >>> [email protected] >>> https://mail.mozilla.org/listinfo/es-discuss >>> >>>
_______________________________________________ es-discuss mailing list [email protected] https://mail.mozilla.org/listinfo/es-discuss

