我浏览了所有与此主题相关的帖子,但是找不到有效的解决方案。可能与我的代码有很大不同。
文件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
我在此上浪费了时间,但仍然不知道我错了什么地方。
任何帮助,将不胜感激。
最佳答案
您要返回的对象具有名为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();
// -----------------------------^