2

このようなオブジェクト リテラルを TypeScript で書きました。

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

そして、次のような生成された JavaScript を取得しました。

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

returnステートメントの前にそのような行があるべきではありません:

 var _that = this;

私はアロー関数式を使用していますか?

4

2 に答える 2

2

あなたは正しいです。:がありません

var _this = this;

これはリリース(0.8)の後に発見され、現在開発者ブランチで修正されています。

注:また、あなたは書きたかったと思います

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

実行時にSayを実際に印刷します。参照:http ://wiki.ecmascript.org/doku.php?id = harmony:arrow_function_syntax

于 2012-10-09T23:03:53.067 に答える
2

=>重要なことに、それは囲んでいるスコープのにバインドthisthisされるため、ここでは少し危険です。正しいコード生成では、var _this = this;行はオブジェクト リテラルのsayにあり、関数は単純に を返しますundefined

囲んでいるスコープに存在するものを実際に参照したい場合にのみthis、式で使用したいだけです。この特定のケースでは、必要ありません (内部スコープ、つまりオブジェクト リテラル自体が必要です)。=>thisthis

于 2012-10-09T23:25:03.490 に答える