Also das ist eine unangenehme Frage zu stellen, aber ich lerne NodeJS und ich habe eine Frage. Wenn ich in Java eine Methode von einem Objekt aus anrufe, bleibt die this
Instanz dieselbe (wie in diesem Beispiel).nodejs - Welches "das" ist das?
private Test inst;
public Test() {
inst = this;
this.myFunction();
}
private void myFunction() {
System.out.println(inst == this);
}
Dies ist wahr (in der Theorie ist das Code von der Spitze meines Kopfes). Wenn ich jedoch in NodeJS versuche, etwas Ähnliches zu tun, schlägt es fehl.
var MyObject = function() {
this.other = new OtherObject();
this.other.on("error", this.onError);
console.log(this); //This returns the MyObject object
}
MyObject.prototype.onError = function (e) {
console.log(this); //This returns the OtherObject object, where I thought it would return the MyObject object.
}
Meine Frage ist, warum dies so ist, und wenn dies nicht richtig auf meinem Teil getan wird, wie kann ich richtig andere Variablen in der MyObject-Instanz aus der onError Methode verweisen?
AFAIK, 'this' in Javascript, ist sehr schwierig. Wenn es in Funktion aufgerufen wird, zeigt es auf den Aufrufer und nicht auf das Objekt, für das die Funktion definiert ist. – walther
@ walther- * das * in Javascript ist überhaupt nicht schwierig. Es ist durch den Aufruf festgelegt, oder die Verwendung von * bind *, das ist es. Obwohl es sich von anderen Sprachen unterscheidet, ist es nicht wirklich schwer zu verstehen. – RobG
@RobG, das ist genau der schwierige Teil - andere Sprachen machen es anders und es verwirrt die Hölle von einigen Entwicklern. Wenn es wirklich so klar wäre, würde eine solche Frage niemals aufkommen (und dies ist nicht das erste oder das letzte Mal). – walther