使用ES6类而不是常量并将其导出

问题描述

我对使用ES6中的类进行编码有些困惑。假设我想创建一个类似于JS的简单库。我在library.js中创建了一个类似的模块:

const $ = (...args) => {
    if (typeof args[0] === 'function') {
    const docReadyFn = args[0];

    document.addEventListener('DOMContentLoaded',docReadyFn);
  }
}

module.exports = $;

然后我在index.js中需要此文件

const $ = require('./library');

module.exports = $;

并在另一个文件中使用它:

const $ = require('./library');

$(() => {
    console.log('DOM ready!');
});

但是,我不想做const $ = (...args) => { ... },而是想用这样的构造函数制作一个类:

class Library {
    constructor(...args) {
        if (typeof args[0] === 'function') {
            const docReadyFn = args[0];

            document.addEventListener('DOMContentLoaded',docReadyFn);
        }
    }
}

module.exports = Library;

以这种方式这样做明智吗?对于类,我必须使用new Library(args)创建一个新实例,但是通过导出const $ = (...args) => { ... },我可以简单地使用$而无需执行任何操作。没有新实例或其他任何东西。我该如何使用类来实现与创建const并导出并立即使用它相同的目的?

解决方法

必须始终用class调用new,并将创建一个新实例。
您的$函数不会创建对象-它不应该是class