Complete Minimal Classes

Herby Vojčík herby at mailbox.sk
Sun Apr 8 03:57:35 PDT 2012



Kevin Smith wrote:
>
>     I like your new(){}/static(){} idea at a glance. Need to ruminate
>     (moo!) on it at length.

I can't give you a use case (it's just a felling of being a good design 
thing), but I would like the classes be higher-level construct based on 
low-level ones. If new()/static() gets in, it defines its own exclusive 
semantics not possible to do by plain constructor function.

Maybe there should be possibility to define split-body plain constuctor 
function, too (with semantics identical to class (or vice-versa)).

Bikeshedding:

function new Ctr (a) { constructor body } static (a,b) { static body }

(with static _required_ if new form is used; maybe "static throw" or 
"static undefined" as shortcuts if one wants static behaviour to throw 
(system-defined error with "[[Call]] behaviour not supported, this is 
pure constuctor" meaning) or wants to have it empty; in that case they 
should be there in class as well).

What does class do if you add new(){} but not static(){}? I presume it 
[[Call]]s new(){} body...

> Some details:
>
> - Clearly super() would have to call the [[Construct]] behavior: new() {}.
> - If there were a different number of formal parameters for the two,
> what would MyClass.length be?
> - What would MyClass.toString() return?
>
> I haven't been able to think of any big problems yet...
>
> kevin

Herby


More information about the es-discuss mailing list