- From: Cameron McCormack <cam@mcc.id.au>
- Date: Fri, 06 Jan 2012 14:08:27 +1100
- To: Boris Zbarsky <bzbarsky@MIT.EDU>
- CC: Allen Wirfs-Brock <allen@wirfs-brock.com>, Ojan Vafai <ojan@chromium.org>, Travis Leithead <travis.leithead@microsoft.com>, "public-script-coord@w3.org" <public-script-coord@w3.org>, Ian Hickson <ian@hixie.ch>, Jeff Walden <jwalden@mit.edu>
Boris Zbarsky: > In any case, the updated text says that if HasBinding returns true then > the implementation should call [[GetOwnProperty]] on the global. If this > returns undefined, then [[DefineOwnProperty]] is called on the global > with the property descriptor: {[[Value]]: undefined, [[Writable]]: true, > [[Enumerable]]: true , [[Configurable]]: configurableBindings }. > > So now to make var shadow some property that property needs to either > return false from HasBinding or return undefined from [[GetOwnProperty]]. Only if we want to keep them on window. If we're happy to move them to the prototype then we're safe, I believe. > Cameron, can GSP properties return undefined from [[GetOwnProperty]] but > still do what they should for window.foo and bareword lookups without > other things elsewhere breaking? They can for window.foo but not for bareword lookups. window.foo will do a [[Get]], and we could have that return the frame while [[GetOwnProperty]] returns undefined. That breaks barewords, though, which definitely do use HasBinding and so [[GetOwnProperty]] to determine if the reference can be resolved or not.
Received on Friday, 6 January 2012 03:09:47 UTC