Ugh, well, I guess I typed a lot of stuff for nothing! And by the look of their experiment, what I wanted was actually one of the major blockers.

It seems classes will really need a more standard type of syntax (non static) before you could actually achieve this, and might be a bridge too far for javascript:

class test
{
let x=1;
let y=2;
constructor() {}
func() { this.z=2; }    // syntax error
}

Though it could be kind of faked by some kind of reverse hoisting, i.e., rebuilding the code inside the engine:

class test
{
constructor()
{
this.x=1;
this.y=2;
// stuff that was in the constructor
Object.seal(this);
}
...
}

[>] Brian

On 3/18/2016 10:04 AM, Sébastien Doeraene wrote:
Hi,

The Strong Mode experiment was canceled:
https://groups.google.com/forum/#!topic/strengthen-js/ojj3TDxbHpQ

Cheers,
Sébastien

On Fri, Mar 18, 2016 at 3:59 PM, kdex <[email protected]
<mailto:[email protected]>> wrote:

    Already considered and to be implemented via strong mode IIRC.

    On 18.03.2016 14:36, Brian Barnes wrote:

        I know properties on classes are getting a look over for the
        next iteration (last I checked) and I understand javascript is
        obviously a different language then other oo languages with a
        different foundation, but I bring this up for it's usage in
        producing stricter code that reduces errors and is easier to
        analyze.  A vote for this if anybody considered it!

        class Test
        {

        constructor()
        {
           this.x=1;
        }

        func1()
        {
           this.y=2;
        }

        func2()
        {
           console.log(this.x+','+this.y);
        }
        }

        var test1=new Test();
        test1.func1();
        test2.func2(); // outputs 1,2

        var test2=new Test();
        test2.func(); // outputs 1,undefined

        I know classes contents are meant to be in strict mode, and I
        thinking that only allowing properties to be created in the
        constructor (or eventually static properties on the class
        itself) would make a system less prone to the conditions like
        you see above.  Basically, func1() would produce a error when run.

        I can see why this type of initialization of properties could be
        desired, though, especially as it reflect the way it would have
        worked if you used a function instead of a class.

        [>] Brian
        _______________________________________________
        es-discuss mailing list
        [email protected] <mailto:[email protected]>
        https://mail.mozilla.org/listinfo/es-discuss


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




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

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

Reply via email to