不一定,this要在具体被调用的时候,才知道是谁,谁调用它,this就是谁
a = {f: function(){ console.log(this)}}
a.f()
那么f里面的this就是a, 因为是a调用f
a = {f: function(){ console.log(this)}}
var f = a.f;
f();
那么f里面的this就是全局对象,因为是全局对象调用f
在编译原理里,对this其实指的是句柄。在使用this时是根据持有当前调用位置引用的对象。整体调用函数就理解为,当前对象持有对被调用对象的一个句柄。
例如在楼上所说的
function a (){
console.log(this);
}
持有当前a方法的是global,因为当前环境调用a方法是最顶层的对象。
a = {f: function(){ console.log(this)}} 里的 this, 持有f方法句柄的就是a对象。
this是 JS 里的关键字, 在每个函数体里边都可能不一样. 比如a = {f: function(){ console.log(this)}}里的this, 指向的是所从属的对象a, 全局就是全局的this. 具体找教程看看吧不一定,this要在具体被调用的时候,才知道是谁,谁调用它,this就是谁 a = {f: function(){ console.log(this)}} a.f() 那么f里面的this就是a, 因为是a调用f a = {f: function(){ console.log(this)}} var f = a.f; f(); 那么f里面的this就是全局对象,因为是全局对象调用f
在函数外部或者是这样申明的函数,this都指向global function a (){ console.log(this); }
在编译原理里,对this其实指的是句柄。在使用this时是根据持有当前调用位置引用的对象。整体调用函数就理解为,当前对象持有对被调用对象的一个句柄。 例如在楼上所说的 function a (){ console.log(this); } 持有当前a方法的是global,因为当前环境调用a方法是最顶层的对象。
a = {f: function(){ console.log(this)}} 里的 this, 持有f方法句柄的就是a对象。
楼主去看下作用域的问题吧
console.log(exports); 看看
一句话 this指向它的调用者 函数在执行的时候才知道this是谁