理解this作用域
《javascript高级程序设计》中有说到:
this对象是在运行时基于函数的执行环境绑定的:在全局函数中,this等于window ,而当函数被作为某个对象调用时,this等于那个对象。不过,
匿名函数具有全局性,因此this对象同常指向window
不过,在全局函数中,this等于window
,匿名函数具有全局性,因此this对象通常指向window
,针对于匿名函数this具有全局性的观点仍是有争议的,可参考 https://www.zhihu.com/question/21958425
this的指向取决于函数(不包含箭头函数)执行时的环境
验证过程如下:
关于闭包经常会看到这么一道题:
var name = "The Window";
var object = {
name : "My Object",
getNameFunc : function(){
return function(){
return this.name;
};
}
};
console.log(object.getNameFunc()());//result:The Window
在这里,getNameFunc
return了1个匿名函数,可能你会认为这就是输出值为The Window
的原因
但是,我们再来尝试写1个匿名函数
var name = "The Window";
var object = {
name : "My Object",
getNameFunc : function(){
return this.funAA;
},