0

使用するスタイルを見ました

var test = function() {
    var that = this;
    this.show() {
        that.***;
    }
}

なぜthat関数で使用するのか疑問に思っていますか?

4

3 に答える 3

2

使用の目的は、関数が構築されたコンテキストでthatキャプチャすることです。this関数が呼び出されると、this別のコンテキスト (私が信じている呼び出し元) にあるため、test() が呼び出されたときは、this期待したものとは異なります (JavaScript を理解していない限り、その場合は期待どおりになります)あるべきですが、あなたが望むものではありません)。

于 2012-05-31T15:06:10.773 に答える
1

の正しい値をキャプチャしますthis。JS のthisセマンティクスは少し... ファンキー、IMO です。

何が「正しい」かは、実際に必要なものによって異なりますが、this後で評価されます。つまり、this実行時の の値は、関数定義時の値とは異なる場合があります。定義時にキャプチャすることで、必要なものであることを確認できます。

于 2012-05-31T15:05:14.997 に答える
0

thisキーワードは、javascript の関数間で永続的ではないためです。それを使用してローカル変数に保存すると、that = this適用するコンテキストに関係なく、ローカル関数内からアクセスできます。

var test = function() {
    console.log(this); // foo
    var that = this;
    var inner = function() {
        console.log(this); // bar
        console.log(that); // foo
    }
    inner.call('bar');
};

test.call('foo');
于 2012-05-31T15:06:08.740 に答える