Le 15/12/2012 19:38, Allen Wirfs-Brock a écrit :
On Dec 15, 2012, at 9:21 AM, David Bruant wrote:
Hi,
On public-script-coord, Boris Zbarsky showed an example [1] where a global
variable is var-defined and then observed to be absent from the global object
it was attached to (because the WindowProxy has changed of underlying window
object).
The careful ECMAScript 5.1 reader knows that global var-defined variables are
supposed to be reflected as own non-configurable properties of the global
object. Reflecting the property as such commits the object to keep the property
forever which, as we've seen in Boris example, is not compatible with how the
web works.
I don't think it'll be possible to change how global objects in same-origin
iframes work nor relax ES5 invariants; so my proposal is to have
var/let/const/function global declarations *reflected* as configurable, but
acting as if they were not.
This would also require a couple of changes in the spec and consequently JS
engines and certainly test262.
Other proposals welcome, of course.
Note that in ES6 global bindings introduced by let/const/class/import bound
using a declarative environment record and will not be reflected at all on the
global object.
Thanks for the precision. I take back what I said about
"var/let/const/function" and reduce it to "var/function".
David
_______________________________________________
es-discuss mailing list
[email protected]
https://mail.mozilla.org/listinfo/es-discuss