当前位置: 首页 > 面试题库 >

创建新类与使用export const之间的区别

刘瑞
2023-03-14
问题内容

建立:

  • BabelJS(ES2015,React,Stage-1)
  • Webpack
  • React / Redux

CommonJS和ES6的新功能。我知道对象实例和方法的静态容器之间的区别,但是我不确定它们分离到模块后的行为。所以我想知道返回实例之间有什么区别(此模式完全有效吗?):

// StateParser.js

class StateParser {
    constructor() {
     }

     method1() {
        ...
     }

}

export default new StateParser()

并导出const方法:

// StateParser.js

let state = {
}

export const method1 = () => { ... }
  1. 方法A:每次导入时都会有一个新实例吗?
  2. 方法B:使用对象分解功能的好处之一:
    import { method1 } from '../utils/StateParser.js';
    

然后使用method1,好像它在本地存在?

  1. 方法A:在构造函数中初始化状态的好处之一?

因此,基本上我不确定何时将哪个用于我的实用程序类,并且会感谢您的输入。


问题答案:

每次导入A都会有一个新实例吗?

不,模块仅评估一次。

B的好处之一是可以使用对象分解功能,然后使用method1就像它存在于本地一样吗?

是的,尽管它不被称为“解构”。它们被 命名为imports (或模块的 exports ),并且它们不嵌套并且对别名使用不同的语法。

A的优点之一是能够在构造函数中初始化状态吗?

不。您也可以直接在模块范围内直接初始化模块状态,您不需要为此构造函数。

但是,是的,如果您在实例中具有状态,则最好使用一个可以 实例化多次 的类。为此,您当然需要导出类本身,而不是实例

export default new …模式都有效吗?

不,由于上述原因,这是一种反模式。给定该类在其他地方都没有使用,它与匿名类antipattern
非常相似。无论如何,导出多个命名的导出要比默认导出对象好得多。



 类似资料:
  • 问题内容: 比如说我有一个叫做Phone的类。 之间有什么区别? 和 和 我已经搜索过,甚至在Eclipse上尝试过,但无法弄清楚。 问题答案: 只声明一个引用处理程序,该处理程序不会指向任何地方(它是未初始化的,除非您为其分配了某些内容,否则无法使用[感谢@Anthony])。 声明一个引用处理程序,该处理程序指向一个新创建的对象(用初始化)。 创建一个新对象,但是由于没有引用存储在任何地方,因

  • 我用使用下面的yaml,我看不出有任何区别,使用这两个命令创建一个pod。K8S文档提到了命令式和声明式命令。但是,create和apply的行为方式仍然相同。 有什么区别?另外,declarative和命令是如何实现的?它们都会获取一个或多个包含对象详细信息的yaml文件。

  • 问题内容: 创建新对象和依赖项注入有什么区别?请详细说明。 问题答案: 好吧,创建一个新对象就可以做到的很明确-您可以创建所需类的新实例。 依赖注入是一种在需要时为您提供引用的机制。想象一下一个代表数据库连接池的类- 您通常只有一个该类的实例。现在,您需要将该引用分发给使用它的所有类。依赖注入在这里很方便- 通过使用像Spring这样的DI框架,您可以定义将一个池实例注入到需要它的类中。 您的问题

  • 问题内容: 请说明对象一和对象二的区别: 欧宝级扩展了轿车。 问题答案: 您可以重新分配给的其他某个子类的对象: 但是您不能那样重新分配,因为它仅限于。 如果是在类中定义的方法,而不是在类中定义的方法,则如果这样做,编译器将给您一个错误: 但这没关系: 由于它知道仅限于,因此它知道该方法将存在。 通常,您希望将变量声明为尽可能 广泛的 类型。也就是说,如果您仅要使用中的方法,则请使用type声明它

  • Spring IOC在启动时创建并初始化bean。bean的创建和初始化有什么区别? 在使用@Lazy时,据说用@Lazy注释的bean将被惰性地实例化。这是否意味着,该bean将在ApplicationContext启动时创建[像其他未使用@Lazy注释的bean一样],并在首次引用时初始化?