Originariamente inviato da SoulStorm892
Grazie compagno
Prego
Occhio però che la riga Player.constructor.prototype = Sprite; è semanticamente senza senso e devi rimuoverla. Il costruttore di Player (che è una funzione) è Function: e tale lo devi lasciare.


Originariamente inviato da SoulStorm892
perche' devo passare per forza da un una classe vuota? se scrivo Player.prototype = new Sprite() non dovrebbe essere la stessa cosa?
Lo so che è poco intuitivo. Sia che tu faccia Player.prototype = new Sprite() che se tu faccia Player.prototype = new SpriteBlank() il prototipo di Player erediterà le proprietà del prototipo di Sprite: questo perché in precedenza avevi scritto SpriteBlank.prototype = Sprite.prototype. Il motivo per cui ti conviene far così è che Sprite() richiede un argomento, se facessi Player.prototype = new Sprite([che ci metto qui dentro?]) avresti il prototipo di Player con una proprietà surname settata su undefined. Spero sia chiaro.

P.S. Se proprio non riesci a tenerti la funzione SpriteBlank, cancellala e sostituisci

codice:
SpriteBlank.prototype = Sprite.prototype;
Player.prototype = new SpriteBlank();
con

codice:
Player.prototype = Object.create(Sprite.prototype);
che è esattamente la stessa cosa. Considera però che la funzione Object.create() è una new entry in JavaScript e potrebbe non essere supportata da tutti i browsers.