gpt4 book ai didi

javascript - 如何使用 module.exports 和 require() 在 Node.js 中同时导出类和父类(super class)?

转载 作者:搜寻专家 更新时间:2023-11-01 00:19:57 25 4
gpt4 key购买 nike

这可能很明显,但我不明白如何使用 module.export 导出子类和父类(super class)。我目前收到错误 ReferenceError: not defined。这是 /js/dalmatian.js 中的示例子类 Dalmatian:

class Dalmatian extends Dog{
constructor(){
super();
/// stuff
}
}

module.exports = {
Dalmatian : Dalmatian
}

如果我随后将此类导出到另一个 *.js 文件中,我会遇到问题:

require('../js/dog.js');   // this works
require('../js/dalmatian.js'); // this fails

ReferenceError: Dog is not defined

我不明白。 super 构造函数在 Dalmatian 中使用,即 super();

如何导出基类(此处为 Dog),以免出现此错误?

最佳答案

您必须在子类声明中要求 父类。还有 export 父表单子(monad)类 export 子句。

然后,您可以在需要('./dalmatian') 子类的脚本中使用DogDalmatian

这是一个工作示例:

dog.js

class Dog{
constructor(){
console.log('dog');
}
}

module.exports = Dog;

dalmatian.js(注意我们如何导出两者)

const Dog = require('./dog');

class Dalmatian extends Dog{
constructor(){
super();
console.log('dalmatian');
}
}

module.exports = {
Dalmatian : Dalmatian, //export this class
Dog: Dog // and export parent class too!
}

test.js

const Dalmatian = require('./dalmatian').Dalmatian;
const Dog = require('./dalmatian').Dog; //---> Notice this
//const Dog = require('./dog'); ---> works too, but above is clearer and cleaner

new Dalmatian();
new Dog();

输出:

➔ node test.js
dog
dalmatian
dog

关于javascript - 如何使用 module.exports 和 require() 在 Node.js 中同时导出类和父类(super class)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49962520/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com