在Javascript中导出类实例 [英] Export of a class instance in Javascript

查看:38
本文介绍了在Javascript中导出类实例的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在查看this代码,其中类实例以一种有点奇怪的方式导出。

提供了一个剪辑。导出方式如下:

    class RegisterStore {
    @observable success = false
    @observable failure = false
    @observable errors = {}
    ...
    }

export default new RegisterStore()
export { RegisterStore }

在index.js中导入如下:

import registerStore from './stores/RegisterStore'
...
const stores = {
registerStore
...
}

为什么第一个代码的末尾有两个导出?是
export default new RegisterStore()
const NewRegisterStore = new RegisterStore(); export default NewRegisterStore等效

推荐答案

export default new RegisterStore() and export { RegisterStore }不相等。在export { RegisterStore }中导出类作为导出对象的一部分,而在export default new RegisterStore()中导出类的实例。

更远。export default new RegisterStore()应该足以正常工作。除非您不想从同一文件导入多个变量,否则再次导出行是无用的。在这种情况下,它将如下所示:

export new RegisterStore();
export const anotherVariable = "TESTTEST";

并类似于导入:

import {RegisterStore, anotherVariable} from './stores/RegisterStore';
对于您的上一个查询,请执行以下操作: 否

export default new RegisterStore() AND 
export default const RegisterStore = new RegisterStore() are equivalent?

也不等价。

首先,export default const RegisterStore = new RegisterStore()引发错误,因为RegisterStore已声明为class,并且您再次使用const声明它。

第二:

export default const NewRegisterStore = new RegisterStore()

也是错误的,因为默认导出必须作为匿名导出,或者在导出之前必须首先声明变量。

对于您的示例,应如下所示:

let NewRegisterStore; export default NewRegisterStore = new RegisterStore();

所以:

export default new RegisterStore() AND 

let NewRegisterStore; export default NewRegisterStore = new RegisterStore(); are equivalent

请阅读有关"命名导出"和"导出默认值"的详细信息here

这篇关于在Javascript中导出类实例的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆