Ich hatte eine ähnliche Frage, aber nicht das Gleiche. Dieser konzentriert sich auf das neue ES6-Klassenschlüsselwort und wie man damit umgeht. SignalR ruft eine Klassenmethode auf. Innerhalb dieser Klassenmethode bezieht sich 'this' auf den SignalR-Hub und nicht auf die Klasseninstanz selbst. Wie kann ich die Klasseninstanz in diesem Klassenmitglied abrufen, die SignalR mit den neuen ES6-Klassen aufgerufen hat?SignalR Klassenmethode Rückruf und 'dies'
class gameLoad {
constructor(){
}
init(){
// create the network object and hook it's functions update for loading
this.network = $.connection.testHub;
this.network.client.hello = this.sayHello;
}
// this is called from signalR and 'this' now refers to the signalR hub inside this function. how can I get the class instance?
sayHello(){
console.log(this); // 'this' refers to signalR object not gameLoad object
}
create(){
var self = this;
$.connection.hub.start().done(function() {
console.log("Started!")
console.log("Calling server function.");
// make our first network call which will turn around and call client.hello which is bound to this classes sayHello() member function
self.network.server.hello();
});
}
}
Dies nichts mit ES6 Klassen hat, funktionierte es genau die gleiche Art und Weise in ES5. – Bergi