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 <mikesam...@gmail.com
<mailto:mikesam...@gmail.com>> escreveu:
On Thu, Jul 19, 2018 at 10:40 AM Augusto Moura
<augusto.borg...@gmail.com <mailto:augusto.borg...@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@mozilla.org
https://mail.mozilla.org/listinfo/es-discuss
_______________________________________________
es-discuss mailing list
es-discuss@mozilla.org
https://mail.mozilla.org/listinfo/es-discuss