Questo a macchina sulla definizioni?

voti
2

Ho scritto tale oggetto letterale a macchina:

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

E ho avuto come JavaScript generato:

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

Non dovrebbe esserci tale linea prima istruzione return:

 var _that = this;

come io sto usando la funzione di espressione freccia?

È pubblicato 10/10/2012 alle 00:00
fonte dall'utente
In altre lingue...                            


2 risposte

voti
2

=>è un po 'di un pericolo qui perché, in modo critico, che si lega thisalla racchiude ambito delthis . Nella generazione del codice corretto, la var _this = this;linea passa sopra l'oggetto letterale e la vostra sayfunzione restituisce semplicemente undefined.

È sempre e solo da utilizzare thisin =>un'espressione quando si vuole realmente fare riferimento a thische sarebbe presente nel perimetro che racchiude. In questo caso particolare, non (si desidera che l'ambito interno this, vale a dire la stessa letterale oggetto).

Risposto il 10/10/2012 a 00:25
fonte dall'utente

voti
2

Siete sulla strada giusta. E manca il:

var _this = this;

Questo viene scoperto dopo il rilascio (0,8) ed è attualmente fissata sul ramo di sviluppo.

Nota: Anche io penso che si voleva scrivere

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

che actualy stampare dire quando è gestito. Vedi: http://wiki.ecmascript.org/doku.php?id=harmony:arrow_function_syntax

Risposto il 10/10/2012 a 00:03
fonte dall'utente

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