A streamlined non-disturbing class possibility

Herby Vojčík herby at mailbox.sk
Tue Jan 31 02:18:04 PST 2012


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


More information about the es-discuss mailing list