【问题标题】:Using nested classes to simulate namespaces in ES6使用嵌套类模拟 ES6 中的命名空间
【发布时间】:2023-04-10 18:55:01
【问题描述】:

我有一个文件,Services.js,我正在尝试将我所有的个人服务加载到其中。这些服务以单例形式公开。

Services.js

var Services = { };

export default Services;

然后我希望 Sample Service 嵌套在 Services 下,因此我可以调用例如 Services.Sample.Operation()

`SampleService.js'

import Services from './Services';

Services.Sample = {

    Operation: function() {
        alert('operation!') 
    }
};

export default Services.Sample;

然后,我尝试导入:

import Services from './services/Services';
import SampleService from './services/SampleService';

alert(Services);         // yields '[object object]'
alert(SampleService);    // yields '[object object]'
alert(Services.Sample);  // yields 'undefined' <--- This is the one I actually want to use

我怎样才能得到它,以便我可以参考 Services.Sample 而不是 tan SampleService。如何让 SampleService 嵌套在 Services 下?

【问题讨论】:

    标签: javascript ecmascript-6


    【解决方案1】:

    您的方法不起作用,因为您在 SampleService.js 中导入了 Services.js,但 Services 变量不是来自 Services.js 的“原始”Services 变量。

    我会做的是这样的:

    SampleService.js:

    SampleService = {
    
        Operation: function() {
            alert('operation!') 
        }
    };
    
    export default SampleService;
    

    Services.js:

    import SampleService from './SampleService';
    
    var Services = { };
    Services.Sample = SampleService;
    
    export default Services;
    

    然后:

    import Services from './services/Services';
    
    alert(Services);         
    alert(Services.Sample);
    
    export default Services;
    

    这对我来说似乎对模块的基本(内)依赖性和一致性更有意义(定义ServicesServices.js 中可以做什么而不是SampleService.jsSampleService 可以独立于@987654335 @,加载 Services.js 的模块不应该依赖于 SampleService.js 以及以后可能会改变,...)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-08-03
      • 2011-01-02
      • 2019-04-23
      • 1970-01-01
      • 1970-01-01
      • 2011-01-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多