Das Konstrukt wird ein Pfeil-Funktion aufgerufen. Es wurde mit dem ES2015 Standard eingeführt und funktioniert ähnlich wie die function() {}
Syntax.
Für weitere Informationen, check the MDN docs.
Beachten Sie, dass diese Syntax noch nicht von allen Browsern unterstützt wird, insbesondere ältere Versionen. Sie sollten daher in transpiling it into ES5 compliant JavaScript schauen.
Der Grund, warum Ihr Versuch, sie in eine klassische function() {}
nicht zu transformieren ist, dass klassische Funktionen ihren eigenen this
Wert definieren, während der Pfeil Funktionen der this
Wert der umgebenden Funktion verwenden. Deshalb kann this.updateItems
nicht mehr gefunden werden.
Um dies zu beheben, bindet die Funktion Kontext manuell:
$.ajax({
url: '/items/' + item.id,
method: 'PUT',
data: {item: item},
success: function() {
this.updateItems(item);
}.bind(this)
});
Dies wird als "Pfeilfunktion" bezeichnet, eine neue Möglichkeit, Funktionen in es6 zu deklarieren. [Hier] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Arrow_functions) ist die MDN-Dokumentation und [hier] (http://stackoverflow.com/documentation/ javascript/186/functions # t = 201607230227390313154) ist die neue StackOverflow-Dokumentation! –
Das ist eine ES6-Lambda-Funktion. Der Grund dafür, dass Sie bei einer normalen Funktion einen Fehler bekommen, ist, dass in lambdas "dies" einen anderen Bereich hat. – VSG24
Danke für die Antwort. Immer noch eine Sorge. Wenn seine neue Art, Funktion zu deklarieren, vorwärts geht, funktioniert die alte Wegfunktion() {} nicht? – user2015