Mam funkcji wewnątrz ES6 class
:ES6 w Chrome - Babel Sourcemaps i Arrow Funkcje zakres leksykalny
class Test {
// Omitted code for brevity
loadEvents() {
$.get('/api/v1/events', (data) => {
this.actions.setEvents(data);
});
}
}
Babel transpiles to do innej formie, a to generuje _this
zmienną kontrolować zakres leksykalny z następujących funkcja strzałki.
var _this = this;
$.get('/api/v1/events', function (data) {
_this.actions.setEvents(data);
});
Kiedy debugować klasę ES6 korzystając sourcemaps w Chrome i umieścić punkt przerwania na linii, gdzie zgłoszę this.actions.setEvents(data);
zauważyłem, że Chrome nie „re-map” this
dopasować oryginalny kod ES6, ale zamiast this
wskazuje na zewnętrzny zakres funkcji i muszę użyć _this
, jeśli chcę uzyskać dostęp do zakresu leksykalnego funkcji strzałki, co jest całkowicie bezcelowe. Jeśli używam sourcemaps, spodziewam się, że będzie to Chrome. narzędzia do zachowania zakresu leksykalnego this
jak w moim kodzie ES6.
Czy istnieje sposób na to, aby narzędzia programistów Chrome działały zgodnie z oczekiwaniami dzięki funkcjom strzałki i strzałki?
_ "to wskazuje na zewnętrzną funkcję" _ - Nie jest dla mnie jasne, co przez to rozumiesz. Czy wartość 'this' jest funkcją? _ "Muszę użyć _to jeśli chcę uzyskać dostęp do zakresu funkcji strzałki" _ - Co te "_to" i "to" ma wspólnego z zakresem funkcji? – zeroflagL