Ta strzałka w maszynopisie definicje?

głosy
2

Napisałem taki obiekt dosłowne w maszynopisie:

var object = {
    message: Say,
    say: () => {
        return this.message;
     }
};

I mam taki generowany JavaScript:

var object = {
    message: Say,
    say: function () {
        return _this.message;
    }
};

Nie powinno tam być taką linię przed instrukcji return:

 var _that = this;

jak używam funkcji Expression Arrow?

Utwórz 10/10/2012 o 00:00
źródło użytkownik
W innych językach...                            


2 odpowiedzi

głosy
2

=>Jest trochę tu niebezpieczeństwo, ponieważ krytycznie, to wiąże thissię otoczamy oscyloskoputhis . W prawidłowym generowania kodu The var _this = this;linia przechodzi nad obiektem dosłownym a sayfunkcja zwraca po prostu undefined.

Wystarczy tylko kiedykolwiek chcesz użyć thisw =>wyrażeniu, kiedy rzeczywiście chcesz zapoznać się this, że będzie obecny w zakresie okalającego. W tym konkretnym przypadku, nie (chcesz zakresu wewnętrznego this, czyli obiektu dosłownym sobie).

Odpowiedział 10/10/2012 o 00:25
źródło użytkownik

głosy
2

Masz rację. To brakuje:

var _this = this;

To zostało ujawnione po wydaniu (0,8) i jest obecnie ustalona na branży deweloperskiej.

Uwaga: Również myślę, że chciałem napisać

var object = {
    message: "Say",
    say: function () {
        return () => this.message;
    }
};

które będą właściwie drukować powiedzieć, kiedy to uruchomić. Zobacz: http://wiki.ecmascript.org/doku.php?id=harmony:arrow_function_syntax

Odpowiedział 10/10/2012 o 00:03
źródło użytkownik

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more