Diese in Typoskript arrow Definitionen?

stimmen
2

Ich schrieb eine solche Objektliteral in Typoskript:

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

Und ich habe so erzeugt JavaScript:

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

Sollte es nicht so sein, Linie vor return-Anweisung:

 var _that = this;

wie ich bin mit Ausdruck Pfeil-Funktion?

Veröffentlicht am 10/10/2012 um 00:00
quelle vom benutzer
In anderen Sprachen...                            


2 antworten

stimmen
2

=>hier ist ein bisschen eine Gefahr , weil, kritisch, es bindet thisan den umschließenden Umfang desthis . In der richtigen Code - Generierung, die var _this = this;geht Zeile oberhalb der Objektliteral und Ihre sayFunktion gibt einfach undefined.

Sie wollen immer nur die Verwendung thisin einem =>Ausdruck , wenn Sie tatsächlich beziehen mögen , thisdass würde in dem umschließenden Umfang vorhanden sein. In diesem speziellen Fall, Sie nicht (Sie wollen den Innenumfang this, dh die Objektliteral selbst).

Beantwortet am 10/10/2012 um 00:25
quelle vom benutzer

stimmen
2

Du hast Recht. Es fehlt das:

var _this = this;

Dies wird nach der Veröffentlichung (0,8) entdeckt und ist derzeit auf dem Entwicklerzweig festgelegt.

Hinweis: Auch wollte ich glaube, Sie schreiben

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

die actualy Say gedruckt wird , wenn es ausgeführt wird . Siehe: http://wiki.ecmascript.org/doku.php?id=harmony:arrow_function_syntax

Beantwortet am 10/10/2012 um 00:03
quelle vom benutzer

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