On Jun 23, 2011, at 4:54 AM, Axel Rauschmayer wrote:

>> How about this? You have a bunch of local variables in various functions 
>> referencing different objects. But by some obscure yet legal means you use 
>> one such reference to mutate the prototype object they share in common, so 
>> all the others appear to be mutated too.
>> 
>> This is not inherently "evil", but it's usually a bug. Usually the other 
>> different objects do not wish to be mutated so indirectly, and the users of 
>> their properties (own and delegated) in those various functions may not be 
>> prepared for such a change.
> 
> So you are mainly worried about mutating methods?

No, any data property.


> My main concern is encapsulation: If you have class methods, I would want to 
> give them the option of having class state. I want the same rules that hold 
> for the object level (state + behavior) to hold for the meta-object level.

The prototype is not the class.

> 
>> Consider monkey-patching. You want to add value to a shared prototype, but 
>> you might break for-in loops. Ok, that can be solved with ES5 
>> Object.defineProperty -- but not if the mutation breaks some other invariant.
> 
> I would probably never use for-in loops in ES.next.

That does not address the general problem. Please read the whole sentence 
including the part I wrote after the "--".

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

Reply via email to