Possible Duplicate:
set attribute with javascript super methodWywołanie metody z nadklasy Podklasa - JavaScript
Próbuję stworzyć prostą grę w HTML5 dla zabawy. Mam klasę Entity, która ma być nadklasą klasy Player.
function Entity(x, y) {
this.x = x;
this.y = y;
this.tick = function() {
//Do generic stuff
}
}
function Player(x, y) {
this.parent.constructor.call(this, x, y);
this.tick = function() {
//Do player-specific stuff
this.parent.tick.call(this);
}
}
Player.prototype = new Entity();
Player.prototype.constructor = Player;
Player.prototype.parent = Entity.prototype;
Problem jest w tym wierszu:
this.parent.tick.call(this);
otrzymuję komunikat o błędzie wyświetlany w konsoli JavaScript w Chrome: "Uncaught TypeError: nie można wywołać metodę 'zadzwoń' undefined".
Nie rozumiem tego i spędziłem dużo czasu próbując znaleźć posty o podobnym problemie. Moje wezwanie do konstruktora superklasy działa dobrze, ale wywołanie metody klasy "nadklasy" nie działa.
Jestem bardzo nowy w tworzeniu gier, więc nie mam pojęcia, czy to dobra konfiguracja (wywołanie tykl klasy nadrzędnej z tykla podklasy). Jeśli istnieje lepszy, bardziej typowy sposób, w jaki ludzie używają, proszę powiedzieć.
Dzięki.
Dlaczego nie masz ogólnych rzeczy na prototypie? Możesz tam z łatwością uzyskać do niego dostęp. – Bergi
javascript nie ma dziedziczenia klasycznego, podobnie jak w innych językach klasycznych, takich jak java. Powinieneś przeczytać dziedziczenie prototypowe i dowiedzieć się o jego różnicach w stosunku do klasycznego. – Christoph