*Only* if that code appears appears within the text of the class of
which objectWithPrivateFoo is an instance. "foo" is what we call a "class
private instance variable", which is essentially the same degree of
encapsulation as Java's "private" fields -- instances of the class can see
into other instances of the same class.

If this code appears outside any class, it would be a syntax error. If it
appears within a class other that the class of objectWithPrivateFoo, then
private(this) returns undefined and private(this).foo thereby throws a
TypeError.

In the presence of inheritance, again the right analogy is Java's
"private". If objectWithPrivateFoo is an instance of C which inherits from
B which inherits from A, and if all of them contribute a private member
named "foo" to the instance's state, and if your code appears within the
text of B, then your expression will evaluate to the "foo" that B
contributed to the state of objectWithPrivateFoo.


On Tue, Jan 3, 2012 at 4:49 AM, Herby Vojčík <[email protected]> wrote:

> Hello,
>
> form what I understood in the class proposal, I can write a code like this:
>
> (function () { return private(this).foo; }).apply(objectWithPrivateFoo)**;
>
> and it will work.
> Is it so? Isn’t  then the notion of "per-object private" impossible having
> dynamic language with first-class function and apply/call?
>
> Herby
> ______________________________**_________________
> es-discuss mailing list
> [email protected]
> https://mail.mozilla.org/**listinfo/es-discuss<https://mail.mozilla.org/listinfo/es-discuss>
>



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

Reply via email to