我有一个ExampleView
类,应该是单例。在此类中,我有方法render
,我想通过对象名称“ ExampleView”从另一个js文件中调用该方法。这是代码:
import View from './view';
class ExampleView extends View {
render() {
return `<span>Test</span>`;
}
}
export default new ExampleView(); //<- exporting as singleton and this object I try to get via it's name
首先我要做的是从名称'ExampleView'中检索导出的单例对象ExampleView
,然后调用方法render
。
class Test {
getInstanceOfModuleByName(name) {
//window[name].render();
}
}
问题是我找不到从名称获取ExampleView
实例的任何方法,但我的ExampleView
类需要为单例。
我知道我可以按照以下方式执行此操作,然后通过window['ExampleView'].render()
调用它:
ExampleView = {
render: function() {
return `<span>Test</span>`;
}
}
但是我真的需要用可调节的ES6来实现它。
您能解释一下我该怎么做吗?
您刚刚导入实例
import whateverYouWantToCallYourViewInstance from './ExampleView'
// snip
return whateverYouWantToCallYourViewInstance.render();
它将是同一对象。
值得注意的是:单身人士是邪恶的。使用ES模块系统来传递实例有点滥用。