2016-08-14 146 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,request.js

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

文件3,xyzRequestManager.js

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

所以通话从文件2开始,我通过调用requestFactory来创建请求对象。在文件3中有很多其他函数,它们以类似的方式从文件1中调用,请求工厂对象,并调用函数。

这给了误差,

Uncaught TypeError: xyzRequestManager.XyzRequest is not a constructor 

我已经浪费了时间这一点,仍然没有什么线索,或者我错了。 任何帮助,将不胜感激。

+0

'xyzRequest !== XyzRequest'。 – Teemu

+0

'requestFactory'函数向全局对象添加一个'createRequest'方法,而不是'requestFactory'函数。 'requestFactory.createRequest'是'undefined'。该代码有很多问题。 JavaScript区分大小写! – 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

相关问题