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();

then在this方法a.b.c内部(除了最终函数名之外的所有内容)。

如果调用构造函数:

var x = new Something();

thenthis是Something() 中的一个新对象。

其他地方this都是全局对象(与浏览器中的相同window)。

this从来都不是原型。这可以一个原型。

在您的示例中:

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

this如果该方法被称为是A(它不必是 的原型A.B) - 如果该方法被称为A.B()是一个新对象new A.B()

于 2013-02-01T14:27:36.223 回答