Come ho capito cose, this
non è disponibile all'interno del costruttore prima che venga chiamato super()
.Passaggio di un metodo di istanza a super con classi ES6
Ancora, quando ci si riferisce ai metodi di istanza, è necessario prefissare il metodo con this
. Quindi, come è possibile passare un metodo di istanza a super()
?
ad es. Nel Phaser framework, c'è una classe Button
. Il costruttore prende un callback per il click-evento:
Constructor
new Button(game, x, y, key, callback, callbackContext, overFrame, outFrame, downFrame, upFrame)
callback - The function to call when this Button is pressed.
callbackContext - The context in which the callback will be called (usually 'this').
Voglio la mia classe Button, che io definisco così:
class MyButton extends Phaser.Button {
constructor(game) {
super(game, game.world.centerX, game.world.centerY, 'buttonImage');
}
clickHandler(button, pointer) {
//handle the clicking
}
}
Quindi, come faccio a passare il clickHandler
a super
?
this.clickHandler
dà l'errore [Build Error] 'this' is not allowed before super() while parsing file: ....
e passando solo clickHandler
mi dà un errore di runtime di Uncaught ReferenceError: clickHandler is not defined
.
Qualche suggerimento?
Ho avuto la stessa idea, ma che mi ha dato un nuovo errore di runtime da Phaser: 'errore non rilevato: Phaser.Signal: ascoltatore è un param richiesta di add() e dovrebbe essere una funzione. – Vegar
Apparentemente aiuta anche a ottenere i parametri nell'ordine corretto .... – Vegar
Questa soluzione non funziona, vedo "Impossibile leggere la proprietà" callback "di undefined" errore quando si fa clic sul collegamento Compilalo in babele – Tony