quick one to whoever will write the proposal: please bear in mind the empty function **must** have a frozen prototype too
Regards On Sun, Feb 22, 2015 at 11:18 PM, Jordan Harband <[email protected]> wrote: > I'd love to bring a proposal to the committee for this since it seems like > there's interest. > > I suspect that even though some of the "empties" seem useless to some, > somebody somewhere will find a use case, and consistency is useful (that > everything that could have a concept of "empty" would have a .empty) > > Errata: > - I don't believe `GeneratorFunction` is a global, so we wouldn't need to > specify one of those > - I wonder if `Promise.empty` as `new Promise()`, ie, a forever pending > promise, would make sense? > - or `Date.empty` as `new Date(0)`? > - We'd definitely want `Map.empty` and `Set.empty` assuming > `Object.freeze` actually froze them > - We'd probably want > `Object.freeze(Object.seal(Object.preventExtensions(empty)))`, to be extra > restrictive. > > Does anyone see any problems or have any objections, beyond "I don't think > there's a use case"? > > On Sun, Feb 22, 2015 at 2:58 PM, Isiah Meadows <[email protected]> > wrote: > >> I really liked Jordan Harband's suggestion >> <https://esdiscuss.org/topic/array-prototype-change-was-tostringtag-spoofing-for-null-and-undefined#content-12> >> of >> adding Array.empty, Function.empty, etc. to ES7. It is relatively easy to >> polyfill as well. >> >> ```js >> [Array, >> ArrayBuffer, >> Int8Array, >> Int16Array, >> Int32Array, >> Uint8Array, >> Uint8ClampedArray, >> Uint16Array, >> Uint32Array, >> Float32Array, >> Float64Array] >> .map(T => [T, new T(0)]) >> .concat([ >> [Object, {}], >> [String, ''], >> [RegExp, /(?:)/], >> [Function, function () {}], >> [GeneratorFunction, function* () {}] >> ]) >> .forEach(([root, empty]) => >> Object.defineProperty(root, 'empty', { >> value: Object.freeze(empty), >> configurable: true, >> enumerable: false, >> writable: false >> })); >> ``` >> >> The code effectively explains what I think would make suitable >> replacements for each. I don't see the use cases for some of these, though, >> such as `String.empty` or `RegExp.empty`. >> >> -- >> Isiah Meadows >> >> _______________________________________________ >> 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 > >
_______________________________________________ es-discuss mailing list [email protected] https://mail.mozilla.org/listinfo/es-discuss

