On Jun 21, 2011, at 8:24 AM, Axel Rauschmayer wrote:

> As a loose analog to the prototype-chain-traversing getPropertyDescriptor(), 
> I would still like to have something that allows one to easily *change* 
> properties higher up the prototype chain (e.g. to use a prototype to share 
> state).

Such mutation from a delegating object, because it affects all other objects 
that delegate to the shared prototype, is usually a bug! Shared mutables are a 
bitch, even ignoring threads.

I think it would be better to require the mutation to have a direct reference 
to the prototype. Yes, it could be discovered via Object.getPrototypeOf -- 
assuming no proxies.

We cannot assume no proxies, and a Proxy is responsible for delegating to 
possibly hidden objects other than the |proto| passed to Proxy.create.

Even without proxies, or assuming they behave like native objects, mutation 
from one of N delegating objects is an anti-pattern.

/be


> 
> Maybe it would be enough to just have Object.getDefiningObject(obj, propName):
> http://www.mail-archive.com/es-discuss@mozilla.org/msg06652.html
> 
> But I can also imagine syntactic sugar:
>        obj.foo := "abc"
> desugars to
>        Object.getDefiningObject(obj, "foo").foo = "abc"
> 
> -- 
> Dr. Axel Rauschmayer
> 
> a...@rauschma.de
> twitter.com/rauschma
> 
> home: rauschma.de
> blog: 2ality.com
> 
> 
> 
> _______________________________________________
> es-discuss mailing list
> es-discuss@mozilla.org
> https://mail.mozilla.org/listinfo/es-discuss

_______________________________________________
es-discuss mailing list
es-discuss@mozilla.org
https://mail.mozilla.org/listinfo/es-discuss

Reply via email to