On Dec 11, 2013, at 2:22 PM, Tim Fox <[email protected]> wrote: > On 11/12/13 13:19, A. Sundararajan wrote: >> The way Avatar/js project ( https://java.net/projects/avatar-js ) project >> implements CommonJS/require is as follows. >> >> It creates a anonymous function code wrapping a module (say like http.js). >> The anonymous function accepts 'exports' as argument. When you eval that >> code at top level global scope, because of the anon function wrapping >> around, all top level vars in a module code like http.js become locals of >> that anon function. > > Isn't that the same as what I described in my last post? > > If so, the problem with that is that globals that aren't prefixed with var > still leak.
I might be mistaken, but isn't that the best technique browser-based (pure JavaScript) require() implementations can do too? Again, not justifying the design (I'm saying this a lot today), just pointing out that a widespread deployment base - namely, all browsers - might also suffer from the problem. Attila.
