У меня есть функция-конструктор, которая создает объект. При первом вызове ошибок нет, все работает нормально. Во второй раз, когда я его вызываю, я получаю следующую ошибку:
Вот где вызывается конструктор:
$('#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 ...
Это 3000 строк javascript, не знаю, как бы опубликовать только часть.
currentPosition = L.latLng[0,0] и previousPosition, вероятно, не делают то, что вы от них хотите, но они вряд ли будут вызывать ошибки.
Вы говорите: «Когда я вызываю его второй раз, я получаю следующую ошибку:», но ничего не показываю об ошибке.
Пожалуйста, прочтите Как создать минимальный, полный и проверяемый пример, если вы не знаете, как превратить эти 3000 строк во что-то, что другие могут быстро понять.
Похоже, ваша функция конструктора aircraftObj перезаписывает переменную aircraftObj.
Спасибо, Берги .... ты мне подсказал, что нужно копать глубже. Я действительно переписывал конструктор с помощью переменной, которая имела то же имя позже в коде. Все работает сейчас.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


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