双方を参照するような構造をしようとすると、xxxx is not a function というエラーが出ます。
子要素を生成することができる親要素を用意したいと思っています。
ここでいう要素とは、たとえばclass Person{}としています。
で、new Person()生成する関数factory()を用意しています。
Personにはchild()関数を用意しており、
factory()を実行して、子要素を作っています。
この仕組みを1ファイルで記述すると成功するのですが、
ファイルを分割して、双方の関数をrequireして使うようにしていると、
次のようなエラーが出てしまいます。
TypeError: factory is not a function
どのように解決すればよいでしょうか??
コード例です。
factory.js
javascript
1const {Person} = require("./Person"); 2 3function factory(){ 4 return new Person() 5} 6module.exports = { 7 factory 8}; 9
Person.js
javascript
1const {factory} = require("./factory"); 2 3class Person{ 4 constructor() {} 5 say(){ 6 return "hello"; 7 } 8 child(){ 9 return factory() // ←このfactory()がundefinedだと怒られます。 10 } 11} 12module.exports = { 13 Person 14};
メイン処理
main.js
const {factory} = require("./factory"); const parent = factory() parent.say() // "hello" parent.child().say() // "helloとでてほしい" parent.child().child().say() // "helloとでてほしい"
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/11/03 16:41