On 16.11.2011 23:19, Quildreen Motta wrote:
But with `var', only the declaration is hoisted, the actual assignment is not. Such that:

var point3d = extends point { z: 1 }
var point = { x: 1, y : 1 }



Right, but I used declarative form, w/o assignment:

var point3d extends point { z: 1}

OTOH, an expression (yours example w/ assignment) will be eval'ed in the runtime, yes.

P.S.: Kh-mm... but how the declarative form can eval the block on entering the context if the block contains some complex data? .. it means all the data should be defined already anyway.

E.g.:

var point3D extends point { z: calculate(); }

calculate should be defined and the execution is made in the runtime, i.e. again, just `var' is hoisted. But, it seems OK -- the same as with classes.

Dmitry.

Would still fail, as far as I know, whereas:

class point3d extends point { z: 1 }
class point { x: 1, y: 1 }

Should work, if class is hoisted.


2011/11/16 Dmitry Soshnikov <[email protected] <mailto:[email protected]>>

    On 16.11.2011 23:12, Erik Arvidsson wrote:

        One thing that all of these discussions are missing is the
        hoisting
        property of function and any possible future classes. If we
        use "let
        Point = ..." we lose all hoisting and the order of your
        declarations
        starts to matter and we will end up in the C mess where forward
        references do not work.

    No matter, we may rewrite it with `var':

    // parent object
    var point = {x: 10, y: 20};

    // child object
    var point3D extends point {

     z: 30
    }

    // a class
    class Point3D extends Point {
     constructor (x, y, z) { ... }
    }

    It seems interesting for me, since we define both -- child classes
    and child objects with the same syntactic construction; only `var'
    and `class' keywords change.

    Dmitry.

    _______________________________________________
    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