Small Proposal "!in"

Steve Fink sphink at gmail.com
Mon Jul 23 23:28:25 UTC 2018


This reads a little oddly, but another syntax option would be `prop 
in.own obj` (equivalent to `obj.hasOwnProperty(prop)`) and then `prop 
!in.own obj`.

Or perhaps `in.own` should be Object.prototype.hasOwnProperty.call(obj, 
prop)?

Though this makes me think it would be nice to have something like `name 
in.map mymap` (equivalent to `mymap.has(name)`)


On 07/20/2018 10:09 AM, Augusto Moura wrote:
> The only use that came to mind was detecting a property descriptor in 
> a prototype chain. Sure is not a day to day use case, but it's useful 
> when writing libraries that involve descriptor modifications 
> (decorators, for example, will largely involve it). Recently I had to 
> get the descriptor of properties in a potencial deep inheritance 
> (current Object helpers only return own descriptors), and used the 
> `in` operator to guard the prototype recursive search.
>
> ``` js
> const searchRecursivelyPropDescriptor = (obj, prop) =>
>   !obj
>     ? undefined
>     : Object.getOwnPropertyDescriptor(obj, prop) || 
> searchRecursivelyPropDescriptor(Object.getPrototypeOf(obj), prop);
>
> const getPropertyDescriptor = (obj, prop) =>
>   prop in obj ? searchRecursivelyPropDescriptor(obj, prop) : undefined;
> ```
>
> Anyways, we can't simply ignore the operator, if we are getting a 
> `!instance` and opening precedence to future operators (`!on` or 
> `!hasOwn`) I don't see any problems with a `!in`. Legacy bad design 
> should not affect language consistency of new features.
>
> Em qui, 19 de jul de 2018 às 12:07, Mike Samuel <mikesamuel at gmail.com 
> <mailto:mikesamuel at gmail.com>> escreveu:
>
>     On Thu, Jul 19, 2018 at 10:40 AM Augusto Moura
>     <augusto.borgesm at gmail.com <mailto:augusto.borgesm at gmail.com>> wrote:
>
>         Of couse the usage of `in` is most of the time is not
>         recommended, but it has it place.
>
>
>     What places does it have?
>     I remain unconvinced that `in` has significant enough use cases to
>     warrant high-level ergonomics
>     were it being proposed today.
>
>     It exists, and it'll probably never be removed from the language,
>     but I don't think it should be taught
>     as a good part of the language, and linters should probably flag it.
>
> -- 
> Augusto Moura
>
>
> _______________________________________________
> 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/20180723/d260b2a8/attachment-0001.html>


More information about the es-discuss mailing list