从javascript中的字符串获取导出的单例实例

问题描述 投票:2回答:1

我有一个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来实现它。

您能解释一下我该怎么做吗?

javascript ecmascript-6
1个回答
0
投票

您刚刚导入实例

import whateverYouWantToCallYourViewInstance from './ExampleView'

// snip

return whateverYouWantToCallYourViewInstance.render();

它将是同一对象。


值得注意的是:单身人士是邪恶的。使用ES模块系统来传递实例有点滥用。

© www.soinside.com 2019 - 2024. All rights reserved.