Analog to Object.getPropertyDescriptor() for *changing* a property value?

Brendan Eich brendan at mozilla.com
Tue Jun 21 12:36:11 PDT 2011


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
> 
> axel at rauschma.de
> twitter.com/rauschma
> 
> home: rauschma.de
> blog: 2ality.com
> 
> 
> 
> _______________________________________________
> es-discuss mailing list
> es-discuss at mozilla.org
> https://mail.mozilla.org/listinfo/es-discuss



More information about the es-discuss mailing list