2017-03-02 1 views
3

Hier ist eine Javascript/ES6-Methode, die einen Hash bestehend aus zwei Methoden ... writeA und _write zurückgibt. Wir wollen writeA von außerhalb des Hashs aufrufen, und diese Methode muss selbst _write aufrufen, um ihre Arbeit zu erledigen.Wie kann eine Funktion in einem Javascript-Hash einen anderen im selben Hash sicher anrufen

Wenn die letzte Zeile ausgeführt wird, sagt der Interpreter, dass this._write keine Funktion ist. _write hat den gleichen Effekt. Wie kann ich auf _write von innerhalb von writeA verweisen?

Antwort

4

Sie verwenden => für Ihre Funktionsdefinitionen, was die Art und Weise, wie this funktioniert, vollständig ändert. Funktionen, die mit => erstellt wurden, sind mit this als das gebunden, was sie in der Umgebung (Gültigkeitsbereich) waren, in der sie erstellt wurden. Da getHash() selbst eine =>-Funktion ist, ist der Wert this in dem Kontext, in dem getHash definiert ist, was in writeA() sichtbar ist.

Wenn Sie den Rückgabewert von getHash() durchlaufen und die Funktionen mit function() Syntax umschreiben, erhalten Sie das Verhalten, das Sie erwarten.

+0

Es ist ein Fehler zu glauben, dass '=>' nur eine bequeme Kurzschrift ist. Das ist es, aber es hat viel bedeutendere Auswirkungen. – Pointy

+0

Diese Antwort ist perfekt ... Ich werde auf jeden Fall mehr über => und seine Auswirkungen lesen. Vielen Dank! – RooSoft

+1

Gute Antwort. OP hat ein paar Sekunden gespart und ein paar Zeichen eingegeben. Dann verbrachte Minuten/Stunden damit, es zu reparieren. Denkanstoß ... – user949300

Verwandte Themen