Объект, который я создал, (враги) ищет свойство другого объекта (shotArr [0] .x) это может или не может существовать. Он пытается сделать это через this.detect = function()
function Enemies(x,y,w,h) {
this.x = x; this.w = w;
this.y = y; this.h = h;
this.draw = function(){ //how to paint
ctx.shadowBlur= 0;// shadow Blur
ctx.shadowColor= 'red';
ctx.fillStyle = 'rgb(200, 0, 0)';
ctx.fillRect(this.x, this.y, this.w, this.h);
}
this.detect = function() {
if (typeof (shotArr[0].x) === 'undefined') {
return console.log('no bullets exist at the moment');
} else {
return shotArr[0].x;
}
}
this.move = function() { //animation behavior
this.y++;
}
this.send = function(){ //send to canvas
this.draw();
this.move();
this.detect();
}
}
Если пользователь не сделает снимок, нажав клавишу пробела, массив будет пустым и значение shotArr[0].x
не будет. Приведенный выше экземпляр объекта, тем не менее, продолжит цикл метода функции this.detect
и выдаст ошибку из-за невозможности найти свойство:
"Uncaught TypeError: Невозможно прочитать свойство 'x' из неопределенного"
Я думал, что нашел способ обработки ошибки в строке, которую я поместил в оператор if, чтобы определить, было ли свойство неопределенным?
Кроме того, как только снимок сделан, следующие строки этого же оператора if, отображающие существующее свойство, даже не выполняются, потому что ошибка постоянно возвращается.
Как я могу кодировать this.detect = function()
таким образом, что если объект, который он ищет, не существует - он не выдаст ошибку. И если он существует - он возвращает запрашиваемое свойство?