Javascript:未捕获的TypeError,而不是构造函数

时间:2016-08-14 09:19:31

标签: javascript constructor typeerror factory-pattern

我浏览了与此主题相关的所有帖子,但找不到可行的解决方案。在我的代码中可能是非常不同的东西。

文件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
 }
}

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

这给出了错误,

Uncaught TypeError: xyzRequestManager.XyzRequest is not a constructor

我浪费了几个小时,但仍然不知道我错在哪里或哪里。 任何帮助将不胜感激。

1 个答案:

答案 0 :(得分: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();
// -----------------------------^