1

重複の可能性:
var that =this; javascriptで意味しますか?

私はよくこの割り当てをJavascriptコードで見つけます:

var that = this;

これは例です:

function Shape(x, y) {
    var that= this;

    this.x = x;
    this.y = y;

    this.toString= function() {
        return 'Shape at ' + that.x + ', ' + that.y;
    };
}

それが必要な理由を説明していただけますか?

私はPHPまたはJavaに精通していますが、Javascriptオブジェクトモデルには精通していないことを覚えておいてください。

4

4 に答える 4

4

これにより、内部関数は Shape() メソッドが呼び出されたインスタンスにアクセスできるようになります。このタイプの変数アクセスは「クロージャ」と呼ばれます。詳細については、https ://developer.mozilla.org/en/JavaScript/Guide/Closures を参照してください。

于 2012-05-30T21:11:00.603 に答える
4

値はthis、関数が呼び出されたときに設定されます。

に設定thatするとthis、その関数内で定義された関数の値が保持されます (それ以外の場合は、それ(内部関数) が呼び出さthisれた方法に依存する値を取得するため)。

于 2012-05-30T21:11:09.313 に答える
0

コンストラクター関数のthisは、そこから構築されるオブジェクトを参照します。ただし、そのthisメソッドの内部では、同じオブジェクトを参照していない可能性があります。

thisそのため、を変数に保持することで、この問題を回避しますthatthisそうすれば、変数を使用せずに作成されたオブジェクトを引き続き参照できます。

function Shape(x, y) {
    var that= this;

    this.toString= function() {
        //"this" in here is not the same as "this" out there
        //therefore to use the "this" out there, we preserve it in a variable
    };
}
于 2012-05-30T21:10:08.377 に答える
0
  • Shape は JavaScript クラスです。メンバー toString() とプライベート プロパティ this.x があります。
  • これは、現在のクラス インスタンスを参照します。
  • toString() が「現在のクラス インスタンス」の下で動作していることを認識するために、 that = this を割り当てます。変数 that は toString() のスコープ内でアクセスできるためです。これは「me」演算子と呼ばれるものです。
于 2012-05-30T21:11:14.237 に答える