我在classes.js
中创建了以下两个类:
class Person {
constructor(firstName, lastName) {
this.firstName = firstName;
this.lastName = lastName;
}
display() {
console.log(this.firstName + " " + this.lastName);
}
}
module.exports = {
Person
};
如您所见,我正在通过module.exports
导出两个类。
Person = require('./classes.js');
const someone1 = new Person("First name", "Last name"); // <-- does NOT work
const someone = new Person.Person("First name", "Last name"); // does work
someone.display();
但是,调用类时,直接调用类时出现错误。
有人建议如何直接调用该类吗?
感谢您的答复!
答案 0 :(得分:3)
如果您希望将所有类都放在一个名为classes.js
的文件中,那么这应该可行;
// classes.js
class Person {
// ...
}
class Vehicle {
// ...
}
module.exports = {
Person,
Vehicle
}
// some-other-file.js
const { Person } = require('../classes')
const person = new Person('First', 'Last')
尽管为了使事情易于理解,我的建议是将您的班级拆分为多个文件,然后直接从其文件中导出每个班级;
class Person {
// ...
}
module.exports = Person
const Person = require('../classes/person')
// do something
答案 1 :(得分:1)
如果
module.exports = {
Person
};
因此
Person = require('./classes.js').Person;
或者,您可以
module.exports = Person;
和
Person = require('./classes.js');
答案 2 :(得分:1)
在classes.js
中,您将Person导出为对象属性。因此,要使其按预期工作,您可以执行Destructuring Assignment
const { Person } = require('./classes')
或者直接从classes.js
文件中要求类。
const Person = require('./classes').Person
或者,这是一个更好的选择,我认为您可以将Person分离到其自己的文件并默认导出。
文件
./Person.js
class Person {
constructor(firstName, lastName) {
this.firstName = firstName;
this.lastName = lastName;
}
display() {
console.log(this.firstName + " " + this.lastName);
}
}
module.exports = Person
然后在您的主文件中执行:
const Person = require('./Person');
答案 3 :(得分:1)
在这种情况下,您要导出包含object
类的Person
module.exports = {
Person
};
因此,当您像Person = require('./classes.js')
您实际上是在导入导出的对象。因此,Person
在导入后类似于
Person = {
Person
};
您可以通过将所需的导出对象分配给module.exports来更改导出,例如:
module.exports = Person
或将导入更改为使用destructuring assignment
进行导入(注意花括号):
const { Person } = require('./classes.js');