On Fri, Jan 20, 2012 at 5:55 AM, Andreas Rossberg <rossb...@google.com>wrote: [...]
> Regarding scope pollution, I think this is best solved by making the > global object be a fresh empty object that has the object containing > all primordials as its prototype. > [...] <very pedantic -- you've been warned> Just a pedantic terminology point for now: Presumably you mean "global primordials other than the global object itself". Object.prototype.toString is a primordial, but presumably there is no direct binding from your proposed object to Object.prototype.toString. (An alternate interpretation of your "containing" might be "reachable", in which case it would apply to Object.prototype.toString, but IMO that's a confusing way to specify things.) I would classify Object as a global primordial, because it is initially bound, according to ES specification, to the global variable named "Object". The global object itself is bound to top level "this", which isn't exactly a global variable, so it is unclear whether the unqualified phrase "global primordials" should include it. Hence the qualification. Although the global object is often also bound to a global variable like "window", this does *not* make it a global primordial, since that binding derives from the hosting environment rather than any ES spec. Were we to adopt your proposal, this new object would itself be a new primordial, reachable directly from the global object but not named by any global variable. Indeed, it would be one of the very few primordials not named by a naming path rooted in a global variable. (Another example is the ThrowTypeError object of 13.2.3. Are there any others? I can't think of any.) </very pedantic -- you've been warned> Substantive comments later after I've mulled over your very interesting suggestion. -- Cheers, --MarkM
_______________________________________________ es-discuss mailing list es-discuss@mozilla.org https://mail.mozilla.org/listinfo/es-discuss