With .{...} around, I wonder, do we really need special class construct with its own structure? I think with a little set of changes, minimal, well-blended solution would be possible:

1. Allow <| for function declarations.

  SuperFun <|
  function fun(...) {
    ...
  }

2. Allow .{} for function declarations.

  function gz(compress=false, blob) {
    ...
  }.{
    GZIP := 2,   // := is const member as in actual proposal
    DEFLATE := 4
  }

3. Define keyword 'class' to do exact same thing as function (declare function or return expression; setting up empty prototype and constructor property in it), with only one difference - it's completion value will be the prototype, not the constructor.

  Animal <|
  class Fox (...) {
    // instance initialzation
  }.{
    // instance-shared behaviour (aka prototype)
  }

  Fox.{
    // optionally some static ones
  }

Class-private is the only hard thing. Well, I'd be able to live without it. Just put a private keyword before the class declaration. No big issue, if you want to reuse later, you will, if not, you will not; just don't export it; it will be local to the scope in which class was defined, it may be enough.

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

Reply via email to