任何人都可以在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;}
}
答案 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);
}
this
是A
(如果该方法被称为A.B
,则不必是A.B()
的原型) - 如果是new A.B()
则是新对象方法被称为{{1}}。