`import * as Self from '.'` should work in every implementation of ESM that's shipped so far that I'm aware of.
On Wed, Apr 24, 2019 at 8:39 AM Randy Buchholz <w...@randybuchholz.com> wrote: > Maybe my example was misleading by using an `import`. What I’m talking > about is inspecting the module from within itself. Similar to `this` or > `self`, AFAIK, I can’t get a reference to the module from within the > module – e.g., `module`. Say, I’m in a module that has a default export of > class “Foo”. In a function **in** that module (or class), I want to > create an instance of that default export. I can do it by name `new Foo()`. > But, in more generic code, I need to do it by “role” - `default`. So my > generic version wants something that represents `new module.default()`. > This is because I may not have access to the name – say the function is in > a base class. Take for example a “type” module, that is a wrapper for a > single class, and the filename = class name. One way I can implement > `instanceof` is a string approach: > > > > ``` > > // Foo.mjs > > export default class Foo { > > static type = import.meta.url; > > > > meta = { type: import.meta.url }; > > > > // instanceof > > static [Symbol.hasInstance](instance) { > > return instance.meta.type === Foo.type; > > } > > } > > ``` > > Some weaknesses are it’s strings, and I need to know the name of the class > (for `Foo.type`). So I can’t move this to a base class. > > > > With module reflection, I could do this with objects: > > ``` > > // Foo.mjs > > export default class Foo { > > meta = { type: import.reflect.default }; > > > > // instanceof > > static [Symbol.hasInstance](instance) { > > return instance.meta.type === import.reflect.default; > > } > > } > > ``` > > > > A similar idea would be to define a Module Scope - `module`. Within a > module, using `module` would be like a “static self” – it works on the > structure (e.g., definition) of the module. > > Then `import.reflect.default` could be `module.default`. > _______________________________________________ > es-discuss mailing list > es-discuss@mozilla.org > https://mail.mozilla.org/listinfo/es-discuss >
_______________________________________________ es-discuss mailing list es-discuss@mozilla.org https://mail.mozilla.org/listinfo/es-discuss