4

私はこの Typescript コードを持っています:

constructor($triggerHref: JQuery) {
        // stuff...
        var _this = this;
        $(document).on("click",$triggerHref.selector,e=>{
            e.preventDefault();
            var target = $(e.srcElement).attr("data-pcc-sort-trigger");
            if (target == _this.active)
                _this.load(target, !_this.isDescending);
            else _this.load(target, false);
        });

    }

行を削除してイベント ハンドラー内var _this = this;で使用するthisと、生成された js コードはほぼ同じように見えますが (いずれにせよ _this が生成されます)、何らかの理由this.activethis.load()未定義です。

TS のスコーピングについての私の理解では、メソッドは親から()=>{}保持され、メソッドのみが通常の JS メソッドのように機能するというものでした。thisfunction(){}

では、なぜこれがうまくいかないのですか?

4

2 に答える 2

0

ラムダ式は関数式を生成するため、スコープに関する同じ規則が関数式としてラムダ式に適用されます。

例:

var x = e => {};

この Javascript コードを生成します。

var x = function (e) {
};

于 2013-03-08T12:42:11.803 に答える