Sha*_*ang 2 javascript module node.js
这可能是显而易见的,但我不明白如何使用module.export导出子类和超类。我目前收到错误ReferenceError: not defined。这是一个示例子Dalmatian类/js/dalmatian.js:
class Dalmatian extends Dog{
constructor(){
super();
/// stuff
}
}
module.exports = {
Dalmatian : Dalmatian
}
Run Code Online (Sandbox Code Playgroud)
如果我然后将此类导出到另一个*.js文件中,则会遇到问题:
require('../js/dog.js'); // this works
require('../js/dalmatian.js'); // this fails
ReferenceError: Dog is not defined
Run Code Online (Sandbox Code Playgroud)
我不明白。超级构造函数在 Dalmatian 中使用,即super();.
如何导出基类(此处为Dog)以免出现此错误?
您必须require在子类声明中添加父类。也是export父类子句的export形式。
然后,您可以在脚本中使用该Dog子类。Dalmatianrequires('./dalmatian')
这是一个工作示例:
\n\n狗.js
\n\nclass Dog{\n constructor(){\n console.log('dog');\n }\n}\n\nmodule.exports = Dog;\nRun Code Online (Sandbox Code Playgroud)\n\ndalmatian.js(注意我们如何导出两者)
\n\nconst Dog = require('./dog');\n\nclass Dalmatian extends Dog{\n constructor(){\n super();\n console.log('dalmatian');\n }\n}\n\nmodule.exports = {\n Dalmatian : Dalmatian, //export this class\n Dog: Dog // and export parent class too!\n}\nRun Code Online (Sandbox Code Playgroud)\n\n测试.js
\n\nconst Dalmatian = require('./dalmatian').Dalmatian;\nconst Dog = require('./dalmatian').Dog; //---> Notice this\n//const Dog = require('./dog'); ---> works too, but above is clearer and cleaner\n\nnew Dalmatian();\nnew Dog();\nRun Code Online (Sandbox Code Playgroud)\n\n输出:
\n\n\xe2\x9e\x94 node test.js\ndog\ndalmatian\ndog\nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
2617 次 |
| 最近记录: |