5

誰でもjsの「this」キーワードを教えてもらえますか..私は例を見ました。理解できない点があります。

   A.B=function()
    {
      this.x(5); // this refers to prototype of A.B
    }


   A.B.prototype= { 
    x:function(p)
    { this.a(p);  // this refers to prototype of A.B again  
                  // but I expect that this refers to protoype of x ???  

     }, 
        a:function(p){ return p;}
     }
4

1 に答える 1

3

メソッドを呼び出す場合:

a.b.c.d();

thenthisa.b.cメソッドの内部にあります (最終的な関数名を除くすべて)。

コンストラクターを呼び出す場合:

var x = new Something();

thenthisは、Something() 内の新しい新鮮なオブジェクトです。

それ以外はすべてグローバル オブジェクトです (これはブラウザthisと同じです)。window

thisは決してプロトタイプではありません。これはプロトタイプを持つことができます。

あなたの例では:

A.B = function() {
  this.x(5);
}

thisそのメソッドが- として呼び出された場合はA( のプロトタイプである必要はありません) であり、そのメソッドが として呼び出された場合は新しいオブジェクトです。A.BA.B()new A.B()

于 2013-02-01T14:27:36.223 に答える