在方法中的js inside方法中这个关键字的逻辑是什么?

时间:2013-02-01 14:22:20

标签: javascript web function-prototypes

任何人都可以在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;}
     }

1 个答案:

答案 0 :(得分:2)

如果你打电话给方法:

a.b.c.d();

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

如果你打电话给构造函数:

var x = new Something();

然后this是Something()中的新鲜对象。

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

this永远不是原型。这可以拥有原型。

在你的例子中:

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

thisA(如果该方法被称为A.B,则不必是A.B()的原型) - 如果是new A.B()则是新对象方法被称为{{1}}。