有人可以解释为什么第一次导出会引发is not a constructor
错误,而第二次导出却起作用吗?
// Throws a `is not a constructor` error
module.exports = {
Person: function () {
constructor()
{
this.firstname;
this.lastname;
}
}
}
// Works
class Person {
constructor()
{
this.firstname = '';
this.lastname = '';
}
}
module.exports = Person;
// Usage:
const Person = require("person");
let person = new Person();
答案 0 :(得分:3)
因为是第一次实际导出包含属性的对象:
module.exports = { /*...*/ };
您不能构造该对象。但是,您可以获取Person属性并构造该属性:
const Person = require("person").Person;
new Person();
您还可以破坏导入的对象:
const { Person } = require("person");
new Person();
...但是这仅在导出了其他内容的情况下才有意义,否则我会选择v2。