On Jan 23, 2012, at 12:27 PM, Brendan Eich wrote:
> No, the private binding form that is desugared from
>
> private foo;
>
> to
>
> const foo = Name.create("foo");
>
> or better (with hygiene to use the right Name, etc.) is lexical in its
> binding structure.
Is the intention here that the private name object would be in scope, and
accessible to the user? – if so, this does seem useful, but using the plain
name of the property seems potentially prone to typos, e.g.
let o = {};
{
private x:
o.setX = function(x) {
@x = x;
}
o.getX = function() {
return x; // should be 'return @x;'
}
}
I seems that this would be an easy mistake to make, and doesn't appear to be a
syntax error is x is in scope. Wanting to pass around the private name seems
like a less common use case, so perhaps it might be worth making it slightly
harder to get to the private name?, e.g.
const @@foo = Name.create("foo");
const @{foo} = Name.create("foo");
const @"foo" = Name.create("foo");
function getPrivateName() { return @@foo; }
function getPrivateName() { return @{foo}; }
function getPrivateName() { return @"foo"; }
cheers,
G.
_______________________________________________
es-discuss mailing list
[email protected]
https://mail.mozilla.org/listinfo/es-discuss