2017-12-05 2 views
0

다음 코드로 인해 오류가 발생하는 이유는 무엇입니까?Node.js에서 javascript 클래스 인스턴스화

// In Foo.js 
class Foo { 
    constructor(a) { 
     this.a = a; 
    } 
} 

module.exports = Foo 

// In Index.js 
var foo = new require('path/Foo.js')('param'); 

이 나에게 푸 '새로운'없이 호출 할 수 없습니다 클래스 생성자를 제공합니다.

감사합니다.

+0

표시된 코드는 invoki 생성자가 아니라'new' 함수로'require' 함수를 사용하고 있습니까? – nnnnnn

+0

@nnnnnn 끝에 module.exports를 잊어 버렸습니다. 내가 이렇게하면 require ('path/Foo.js)가 Foo 클래스를 반환하지 않습니까? – eChung00

답변

3

귀하의 코드에서 new 연산자가 require() 함수에 적용되고 require()이 반환하는 함수가 아닌 것으로 간주됩니다.

var foo = new require('path/Foo.js')('param'); 

... 이렇게 같다 :

var foo = (new require('path/Foo.js'))('param'); 

... 나 : 그건이있다 new가 적용되도록

var temp = new require('path/Foo.js'); 
var foo = temp('param'); 

는 대신 다음을 시도 수업 :

var Foo = require('path/Foo.js'); 
var foo = new Foo('param'); 
+0

고마워요! "require ("path/Foo.js ")"는 "Foo"와 동일하다고 생각했습니다. – eChung00

관련 문제