Я пошел, хотя все сообщения здесь связаны с этой темой, но не нашли рабочего решения. В моем коде может быть что-то совсем другое.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
}
}
Поэтому вызов начинается с file2, Я создаю объект запроса, вызывая requestFactory. Есть множество других функций, написанных в файле 3, который вызывается из файла 1 аналогичным образом, запрашивает фабричный объект и вызывает вызов функции.
Это дает ошибку, как,
Uncaught TypeError: xyzRequestManager.XyzRequest is not a constructor
Я потратил часы на это, и до сих пор ни малейшего понятия, что и где я не прав. Любая помощь будет оценена по достоинству.
'xyzRequest ! == XyzRequest'. – Teemu
Функция 'requestFactory' добавляет метод' createRequest' к глобальному объекту, а не к функции 'requestFactory'. 'requestFactory.createRequest' является' undefined'. У этого кода много проблем. JavaScript чувствителен к регистру! – undefined
Это не будет вашим реальным кодом, не в последнюю очередь потому, что показанное 'xyzRequestManager.js' потерпит неудачу с синтаксической ошибкой, а показанный код приведет к * другой * ошибке от вопроса в вопросе (см. Комментарий Vohuman's). Создайте фактический [mcve] и покажите, как вы загружаете файлы, чтобы они могли ссылаться на содержимое друг друга. –