Analog to Object.getPropertyDescriptor() for *changing* a property value?
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.
> Maybe it would be enough to just have Object.getDefiningObject(obj, propName):
> 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
> home: rauschma.de
> blog: 2ality.com
> es-discuss mailing list
> es-discuss at mozilla.org
More information about the es-discuss