Leon Arnott wrote:
Well, they're a distinct special form that can be used in expression position, and evaluates to a function, so they're definitely, to bring back an old coin, quasi-literal. (I personally think your reasoning entails that arrows aren't function literals because of their lexical `this` bindings.)

(That doesn't follow, but let's not quibble -- in any case, "literal" is the wrong word.)

The bigger problem is that we do not want class syntax for declaring properties on the prototype, which is what

  class C {
    d: 42,
    constructor(){}
  }

would denote if you really mean object initialiser expressing the prototype object as class body.

So, stuff inside class bodies should be considered more like function statements, not property definitions - even though they have a lot of *very* property-ish things, like computed names, or shorthand methods, or accessors, or shorthand generators... :|

It's neither fish nor fowl.

Special forms are special, they mean what we say. Of course we should use good taste and clear precedent where we can. I'm saying object initialisers are not good precedent, and false taste (like fake sugar -- saccharine!).

And, according to that gist, data properties should be considered to be like assignment statements. Would that make a hypothetical `class { [foo, bar] = [1,2]; }` a destructuring or a computed property name? Either answer seems dissatisfying (the former because it precludes the latter; the latter because it mis-resembles the former).

The proposal from Jeff is just a straw item for ES7, but it seems better than using data property syntax (see above). It'd still be a special form, so restricting the LHS to exclude destructuring patterns is not hard on either grammar or users.

/be
_______________________________________________
es-discuss mailing list
[email protected]
https://mail.mozilla.org/listinfo/es-discuss

Reply via email to