2016-08-14 3 views
0

모든 게시물이이 주제와 관련되어 있지만 작동하는 솔루션을 찾을 수 없습니다. 내 코드에서 뭔가 다른 점이있을 수 있습니다.Javascript : Uncaught TypeError, 생성자가 아닙니다.

파일 1, RequestFactory.js

function requestFactory() { 
    this.createRequest = function (reportId) { 
     var request; 
     request = new xyzRequestManager.XyzRequest(); 
     return request; 
    } 
    return { 
     RequestFactory: requestFactory 
    } 
} 

파일 2,

function() { 
var xyzRequest = function() { 
    this.loadReport = function(report) { --some data--} 
} 
return { 
    XyzRequest: xyzRequest 
} 
} 

그래서 전화가 파일 2에서 시작 xyzRequestManager.js

function loadData() { 
    var request = requestFactory.createRequest(id); 
    request.loadReport(report); 
} 

파일 3 request.js requestFactory를 호출하여 요청 객체를 만듭니다. 비슷한 방식으로 파일 1에서 호출되고 팩토리 객체를 요청하고 함수를 호출하는 파일 3에 작성된 다른 함수가 많이 있습니다.

이 같은 오류를 제공

,

Uncaught TypeError: xyzRequestManager.XyzRequest is not a constructor 

나는 아직도 내가 잘못 무엇이나 단서를이에 시간을 낭비하고있다. 도움이 될 것입니다.

+0

'xyzRequest ! == XyzRequest'. – Teemu

+0

'requestFactory' 함수는'requestFactory' 함수가 아닌'createRequest' 메소드를 전역 객체에 추가합니다. 'requestFactory.createRequest'는'undefined'입니다. 이 코드에는 많은 문제가 있습니다. 자바 스크립트는 대소 문자를 구분합니다! – undefined

+0

표시되는'xyzRequestManager.js '가 구문 오류로 인해 실패하고 표시된 코드가 질문에서 다른 오류를 생성하기 때문에 (Vohuman의 설명 참조)이 코드는 실제 코드가 아닙니다. 실제 [mcve]를 만들고 서로의 내용을 참조 할 수 있도록 파일을로드하는 방법을 보여줍니다. –

답변

1

당신은 *** 주석을 참조 XyzRequest라는 속성이 아니라 xyzRequest의 객체를 반환하고 있습니다 :

// Note: This is verbatim from the question other than this comment and 
// the *** comment below.. It's not valid syntax on its own (the function 
// would need a name), but I assume it's an excerpt from something larger. 
function() { 
var xyzRequest = function() { 
    this.loadReport = function(report) { --some data--} 
} 
return { 
    XyzRequest: xyzRequest  // *** 
} 
} 

그래서 그것을 사용하기를, 당신은 필요 자본 X 그 :

request = new xyzRequestManager.XyzRequest(); 
// -----------------------------^ 
+0

이 업데이트되었으며 여전히 동일한 문제가 있습니다. 나는 같은 이름, 다른 이름, 다른 케이싱조차 시도했다 !! 그러나 여전히 같은 오류. – Anshul