Javascript:Uncaught TypeError,而不是构造函数
问题描述:
虽然我在本文中涉及到这个主题的所有帖子,但找不到工作解决方案。在我的代码中可能是非常不同的东西。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
我已经浪费了时间这一点,仍然没有什么线索,或者我错了。 任何帮助,将不胜感激。
答
你返回了一个名为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
'xyzRequest !== XyzRequest'。 – Teemu
'requestFactory'函数向全局对象添加一个'createRequest'方法,而不是'requestFactory'函数。 'requestFactory.createRequest'是'undefined'。该代码有很多问题。 JavaScript区分大小写! – undefined
这看起来并不是真正的代码,尤其是因为显示的xyzRequestManager.js会失败,并显示语法错误,并且显示的代码将产生与该问题中的错误不同的错误(请参阅Vohuman的评论)。创建一个实际的[mcve]并显示你如何加载文件,以便它们可以引用彼此的内容。 –