Minimalist Classes

Axel Rauschmayer axel at rauschma.de
Wed Nov 2 05:34:50 PDT 2011


The new more object-literal-style syntax is great. "private" sticks out a bit, but it’s not a deal-breaker. It could even be good for the code if it had to appear at the beginning (kind of like a section). Such a section would be great for object literals, too. Maybe we can find a syntax that works for both (as in future-friendly)!

>> And if we're trying to emulate classical OO, then how about just dropping the ability to define data properties on the prototype.
> 
> I am all for that! I kept it for parity with jashkenas's three.js example, but the r, g, and b props there are vacuous default proto-props (ditto the Monster example's proto var and const).

Great great idea! Very newbie-friendly. The error message could tell you: put those properties into the constructor.

>> Your private instance variables are quite interesting.
> 
> Yes, that is a missing ingredient in most proposals we've seen.

+1

>> One nit: you're using @ as both a sigil in @name and as an operator in other at name.  I would expect other. at name instead.
> 
> No, it's a prefix operator if in operand context (like / starting a regexp), a binary operator in operator context (/ as division).
> 
> Trying to avoid .@ all over, and this.@ noise.

I think people have certain expectations for how property access looks (and JavaScript is a better language for it; I don’t like how Java instance properties become part of the local scope). My guess: The expectation would be either one of two notations.

    this at name, other at name
    this. at name, other. at name

>> What about just a dot with nothing on the left hand side?  Can '.foo' be shorthand for 'this.foo'?  Or are there grammatical issues with that?
> 
> That could work with [no LineTerminator here] restriction on the left, which is awkward -- it mandates manual semicolon insertion of you assign .foo = bar after a baz() statement. We thought about this in consider how to reform with, but that's a dead end.
> 
> Another sigil is hard to justify for the this.publicProp case, and for dyadic methods, etc., other.publicProp is how you spell it -- the dot, I mean. So one would want this.publicProp anyway. Between this consideration and the preference for private, I'm fine stopping with @ for private.


I think the namespacing via this is a feature, it give the code a nice uniform look:
    if (this.foo === other.foo)

Axel

-- 
Dr. Axel Rauschmayer
axel at rauschma.de

home: rauschma.de
twitter: twitter.com/rauschma
blog: 2ality.com



-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.mozilla.org/pipermail/es-discuss/attachments/20111102/32ce65ec/attachment-0001.html>


More information about the es-discuss mailing list