Ez géppel nyíl meghatározások?

szavazat
2

Írtam ilyen objektumliterálnak géppel:

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

És kaptam egy ilyen generált JavaScript:

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

Nem kellene ilyen vonal előtt visszatérés nyilatkozata:

 var _that = this;

mint én a nyíl funkció kifejezés?

A kérdést 10/10/2012 00:00
a forrás felhasználó
Más nyelveken...                            


2 válasz

szavazat
2

=>egy kicsit olyan veszély van, mert kritikusan, hogy kötődik thisa befoglaló szondathis . A helyes kód nemzedék, a var _this = this;vonal megy felett a tárgy szó, és a sayfüggvény egyszerűen visszaadja undefined.

Te mindig csak a használni kívánt thisa =>kifejezést, ha valóban szeretnénk hivatkozni this, hogy jelen lesz a befoglaló körét. Ebben a konkrét esetben, ha nem (szeretné, hogy a belső körét this, azaz a tárgy szó is).

Válaszolt 10/10/2012 00:25
a forrás felhasználó

szavazat
2

Igazad van. Ez hiányzik a:

var _this = this;

Ezt fedezte fel a kibocsátás után (0,8), és jelenleg fix a fejlesztő ág.

Megjegyzés: Én is úgy gondolja, hogy akartam írni

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

amely actualy nyomtatni mondani, ha ez fut. Lásd: http://wiki.ecmascript.org/doku.php?id=harmony:arrow_function_syntax

Válaszolt 10/10/2012 00:03
a forrás felhasználó

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