Javascript 从require()获取类实例

Javascript 从require()获取类实例,javascript,node.js,module,Javascript,Node.js,Module,假设我有一个普通模块 module.exports = class MyClass{ } 使用它的标准方式如下: const MyClass = require('myclass.js'); 但是如果我不知道类名,而文件名是一个变量呢?我怎样才能从中获得课程 const ???? = require(file + '.js'); 变量可以任意命名,类名并不重要,因为导入的是整个模块,而模块导出本身就是一个类。如果将其命名为export-likeexports.MyClass=class

假设我有一个普通模块

  module.exports = class MyClass{ }
使用它的标准方式如下:

const MyClass = require('myclass.js');
但是如果我不知道类名,而文件名是一个变量呢?我怎样才能从中获得课程

const ???? = require(file + '.js');

变量可以任意命名,类名并不重要,因为导入的是整个模块,而模块导出本身就是一个类。如果将其命名为export-like
exports.MyClass=class-MyClass{…}
,则很重要

.js
扩展也是可选的,而相对路径很重要

它是:

const MyClassNameDoesntMatterHere = require('./' + className);

变量可以任意命名,类名并不重要,因为导入的是整个模块,而模块导出本身就是一个类。如果将其命名为export-like
exports.MyClass=class-MyClass{…}
,则很重要

.js
扩展也是可选的,而相对路径很重要

它是:

const MyClassNameDoesntMatterHere = require('./' + className);

Considerung类是“隐藏”的函数,您可以访问函数名,也可以在运行时访问函数名。但是,为了创建实例,您不需要知道所需文件中类的命名,因为您可以在所需文件中为它指定一个新的别名。因此,您唯一真正需要知道的是所需文件的名称

// my-class.js
module.exports = class MyClass { }

// require-class.js
const MyNewClassName = require("./my-class");
console.log(MyNewClassName.name); // => "MyClass"
const classInstance = new MyNewClassName();
console.log(classInstance); // => MyClass { }
如果要确保保留类的名称并公开它,我建议将对象导出为命名空间。如果要使其通用,可以通过
object
helpers获取导出对象键的名称,如下所示

// my-class.js
class MyClass {}
module.exports = {MyClass: MyClass};
// or module.exports = {MyClass};

// requiring file ...
const importedObject = require("./my-class");
const myInstance = new importedObject.MyClass();
const objectsInRequire = Object.keys(importedObject); // => ["MyClass"]

Considerung类是“隐藏”的函数,您可以访问函数名,也可以在运行时访问函数名。但是,为了创建实例,您不需要知道所需文件中类的命名,因为您可以在所需文件中为它指定一个新的别名。因此,您唯一真正需要知道的是所需文件的名称

// my-class.js
module.exports = class MyClass { }

// require-class.js
const MyNewClassName = require("./my-class");
console.log(MyNewClassName.name); // => "MyClass"
const classInstance = new MyNewClassName();
console.log(classInstance); // => MyClass { }
如果要确保保留类的名称并公开它,我建议将对象导出为命名空间。如果要使其通用,可以通过
object
helpers获取导出对象键的名称,如下所示

// my-class.js
class MyClass {}
module.exports = {MyClass: MyClass};
// or module.exports = {MyClass};

// requiring file ...
const importedObject = require("./my-class");
const myInstance = new importedObject.MyClass();
const objectsInRequire = Object.keys(importedObject); // => ["MyClass"]