Protected properties using Name objects

Brandon Benvie brandon at
Fri Jun 15 14:18:43 PDT 2012

I addressed some of these as well but didn't put it up here yet. Semantics
(this is all on the gist as well in more readable form)

* Objects keep an internal map of protector *Name* objects to keys.
* A protector can only protect one key per object.
* Each key on an object can only have one protector (this isn't necessary
but seems preferable).
* The key a protector protects can vary between objects.
* The protector for an object's key can be changed.
* A non-writable property's value can always be changed via the protector
(but not direct assignment).
* Setting an object to non-configurable makes it non-protected (they are
mutually exclusive and configurability trumps).
* By extension, a non-configurable property cannot become protected.
* For Accessors, the __public__ property of the protector is passed to the
setter (matches how private Names work with Proxies).
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <>

More information about the es-discuss mailing list