Я все еще довольно новичок в наследовании прототипов в JS, и у меня возникла странная ошибка, которую я не могу понять. Мы пишем игру, используя canvas, и у нас есть код, который выглядит примерно так:
function GameObject() {
// Generic object that everything inherits from
this.x = 0;
this.y = 0;
this.dx = -0.5;
this.dy = 0;
this.width = 0;
this.height = 0;
this.sprite = new Image();
this.sprite.src = "";
}
function Block(x,y) {
this.x = x;
this.y = y;
this.width = 2 * TILE_SIZE;
this.height = 2 * TILE_SIZE;
this.sprite.src = "images/block/block3.png";
blocks.push(this); // Manager array
}
Block.prototype = new GameObject();
Block.prototype.constructor = Block;
Этот код работает нормально. Обратите внимание, что TILE_SIZE определяется в отдельном файле, который включается ПОСЛЕ блочного скрипта - здесь это не проблема. Но когда мы добавим следующий код (после функции Block):
function Block_Turret(x,y) {}
Block_Turret.prototype = new Block();
Block_Turret.prototype.constructor = Block_Turret;
Я получаю Uncaught ReferenceError, что TILE_SIZE не определен в функции Block! Кажется, что ребенок ломает родителя, и я понятия не имею, почему это так - это выглядит довольно простым сценарием наследования. Заранее спасибо!