Dette i Loggfila arrow definisjoner?

stemmer
2

Jeg skrev et slikt objekt bokstavelig i Loggfila:

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

Og jeg fikk en slik generert Javascript:

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

Skulle ikke det være slik linje før retur uttalelse:

 var _that = this;

som jeg bruker pil funksjonsuttrykk?

Publisert på 09/10/2012 klokken 23:00
kilden bruker
På andre språk...                            


2 svar

stemmer
2

=>er en bit av en fare her fordi kritisk, det binder seg thistil den omsluttende ramme sthis . I den riktige koden generasjon, var _this = this;går linjen over objektet bokstavelig og din sayfunksjonen returnerer rett og slett undefined.

Du kun ønsker å bruke thisi et =>uttrykk når du faktisk ønsker å referere til thissom ville være til stede i den omsluttende omfang. I dette tilfellet, trenger du ikke (du vil interiøret omfang this, dvs. objektet bokstavelig seg selv).

Svarte 09/10/2012 kl. 23:25
kilden bruker

stemmer
2

Du er riktig. Det mangler:

var _this = this;

Dette oppdages etter utgivelsen (0,8) og er for tiden fast på utvikleren grenen.

Merk: Også jeg tror du ville skrive

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

som vil faktisk skrive si når det kjøres. Se: http://wiki.ecmascript.org/doku.php?id=harmony:arrow_function_syntax

Svarte 09/10/2012 kl. 23:03
kilden bruker

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