Dit schrijfmachine arrow definities?

stemmen
2

Ik schreef een dergelijk object letterlijk in typoscript:

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

En ik kreeg een dergelijke gegenereerde JavaScript:

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

Moet er niet een dergelijke regel voor return statement:

 var _that = this;

zoals ik ben met behulp van de pijl functie-uitdrukking?

De vraag is gesteld op 10/10/2012 om 00:00
bron van user
In andere talen...                            


2 antwoorden

stemmen
2

=>is een beetje gevaar hier omdat kritisch, dat bindt thisaan de omsluitende scope isthis . In de juiste code generatie, de var _this = this;lijn gaat boven het object letterlijke en uw sayfunctie gewoon terug undefined.

Je alleen maar wilt gebruiken thisin een =>uitdrukking wanneer u daadwerkelijk wilt verwijzen thisdie aanwezig zijn in de omsluitende scope zou zijn. In dit specifieke geval, je niet (je wilt het interieur reikwijdte this, dwz de letterlijke zelf object).

antwoordde op 10/10/2012 om 00:25
bron van user

stemmen
2

Je hebt gelijk. Het ontbreekt de:

var _this = this;

Dit wordt ontdekt na de release (0,8) en wordt momenteel vastgesteld op de ontwikkelaar tak.

Opmerking: Ook ik denk dat je wilde schrijven

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

die zal eigenlijk afgedrukt zeggen wanneer het wordt uitgevoerd. Zie: http://wiki.ecmascript.org/doku.php?id=harmony:arrow_function_syntax

antwoordde op 10/10/2012 om 00:03
bron van user

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