getter & setter for private objects

Brendan Eich brendan at mozilla.com
Mon Nov 2 15:15:28 PST 2009


On Nov 2, 2009, at 3:05 PM, memolus at googlemail.com wrote:

> 2009/11/2 Brendan Eich <brendan at mozilla.com>:
>> Defining accessors on an activation object is nasty,
>> If you want private getters and setters, you can put them in an  
>> object denoted by a private var:
> So you prefer ugly solutions, because the others are nasty?

I don't prefer any of this! You do, but I still am not sure why.

Private variables I understand, and those are doable using closures  
(possibly other ways in Harmony).

But private variables defined by var (or let) are not private getters  
and setters -- why do you need the latter?


>> The upshot for memolus is that with is already a deoptimizer that  
>> introduces
>> non-lexical names onto the scope chain. These can be gettters and  
>> setters
>> and have arbitrary effects. My point remains that adding getters  
>> and setters
>> to activations, which are modeled lexically in the absence of eval,  
>> in
>> strict mode in ES5, and under other such conditions, is a non- 
>> starter.
>
> I didn't get how to use "with" in order to use private objects
> (non-lexical names onto the scope chain). Just ignore my example if it
> tries to add getter and setter to already activated objects. You don't
> have to implement it this way.

How then can they be implemented? Not by interposing a with object,  
since that changes |this| binding....

I suggest you try to state concrete use-case examples first, in order  
to write down requirements.

/be


More information about the es-discuss mailing list