Почему конструктор работает в первый раз, а затем возвращает ошибку типа?

У меня есть функция-конструктор, которая создает объект. При первом вызове ошибок нет, все работает нормально. Во второй раз, когда я его вызываю, я получаю следующую ошибку:

Вот где вызывается конструктор:

$('#start_realtime_tracking').click( function() {

//first, clear out any previous layers
clearLayers();
clearInterval(updatePositions);

//initial the tracking variables to clear out any last usage
aircraftTracking = [];
callSigns = [];
devID_query = [];

console.info('controller-1049: start RealTime Tracking');

// First, get a list of the aircraft we will be tracking
var i =0;
$.each($("input[class='form-check-input callSign_checkbox-rt']:checked"), function () {
  var aircraft = new aircraftObj( $(this).prop('value'), $(this).prop('id'), new Date(), getPolycolor($(this).prop('value')) );
  aircraftTracking.push( aircraft );
  callSigns.push( $(this).prop('value') );
  imeis.push( $(this).prop('value') );
  //console.info('adding callsign ', $(this).prop('value'), ' i= ', i++);
});

imeis определены в глобальной области видимости. Вот сам конструктор:

function aircraftObj (imei, callSign, timeStart, color) {
  console.info('aircraft Constructor: ', imei, ' , ', callSign, ' , ', 
                timeStart, ' , ', color );
  this.imei = imei;
  this.callSign = callSign;
  this.currentPosition = L.latLng[0,0];
  this.previousPosition = L.latLng[0,0];
  this.alt = 0;
  this.speed = 0;
  this.azimuth = 0;
  this.attribute - [];
  this.positions = [];
  this.startMarker = 0;
  this.endMarker = 0;
  this.flightMarker = 0;
  this.polyline = [0,0]; // list of all polylines.
  this.polyColor = color.replace('0x', '#');
  this.moving = 0;
  this.trackedFromStart = 0;
  this.markerColor;
  this.firstMovement = timeStart;
  this.lastMovement = timeStart;
  this.tmpmarker1 = 0;
  this.tmpmarker2 = 0;
};

Я не регистрирую никаких других ошибок, поэтому я не думаю, что память повреждается, но, очевидно, что-то происходит. Как я могу это отследить?

Вот ошибка:

controller.js:1327 Uncaught TypeError: aircraftObj is not a constructor
    at HTMLInputElement.<anonymous> (controller.js:1327)
    at Function.each (jquery.min.js:2)
    at HTMLButtonElement.<anonymous> (controller.js:1326)
    at HTMLButtonElement.dispatch (jquery.min.js:3)
    at HTMLButtonElement.q.handle (jquery.min.js:3)
 (anonymous) @ controller.js:1327
 each @ jquery.min.js:2
 (anonymous) @ controller.js:1326
 dispatch @ jquery.min.js:3
 q.handle @ jquery.min.js:3
 controller.js:1736 

Вы не опубликовали ошибку

Musa 15.04.2018 20:08

Просто отправьте воспроизводимую ошибку. Здесь нам не с чем поиграть, и даже без трассировки стека ошибок, как заявил @Musa ...

sjahan 15.04.2018 20:14

Это 3000 строк javascript, не знаю, как бы опубликовать только часть.

cpeddie 15.04.2018 20:18
currentPosition = L.latLng[0,0] и previousPosition, вероятно, не делают то, что вы от них хотите, но они вряд ли будут вызывать ошибки.
Scott Sauyet 15.04.2018 20:18

Вы говорите: «Когда я вызываю его второй раз, я получаю следующую ошибку:», но ничего не показываю об ошибке.

Scott Sauyet 15.04.2018 20:19

Пожалуйста, прочтите Как создать минимальный, полный и проверяемый пример, если вы не знаете, как превратить эти 3000 строк во что-то, что другие могут быстро понять.

Scott Sauyet 15.04.2018 20:20

Похоже, ваша функция конструктора aircraftObj перезаписывает переменную aircraftObj.

Bergi 15.04.2018 20:27

Спасибо, Берги .... ты мне подсказал, что нужно копать глубже. Я действительно переписывал конструктор с помощью переменной, которая имела то же имя позже в коде. Все работает сейчас.

cpeddie 16.04.2018 01:08
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
8
37
0

Другие вопросы по теме