Property / Literal stealing using Object.defineProperty
allen at wirfs-brock.com
Thu Dec 30 09:15:37 PST 2010
Chrome is non-compliant with the ES5 spec. in this regard.
The specification of object literals in section 11.1.5 uses [[DefineOwnProperty]] to install object literal properties. It is not supposed to trigger any inherited get/set functions.
Try it in FF4 or Safari 5.0.3 or a IE9 preview to see the correct behavior.
On Dec 30, 2010, at 7:38 AM, Bradley Meck wrote:
> Has any note been taken to the possibility of hijacking secure data
> with Object.defineProperty on literals? For example tested in chrome:
> This would lead to interesting issues in using object literals. I
> would presume, you would need to check if a descriptor is set for
> every private data property name, or you would need to use "safe"
> prototypes for things that revolve around private data (branching on
> object properties or storing private information in a closure for
> es-discuss mailing list
> es-discuss at mozilla.org
More information about the es-discuss