var a = 'global';var obj = {
a : 'local',
test : function(){ function test1(){
alert(this.a);//global
}
alert(this.a);//local
test1();//所有者是window
}
};
obj.test();为什么第一个a弹出的值是global 它的this指向了window
3 回答
慕标5832272
TA贡献1966条经验 获得超4个赞
方法调用的时候,会有this指针的传递
例如:
a.doSomething();
那么,在doSomething这个函数域中,this指针指向的就是对象a
如果直接调用doSomething(),那么,this指针指向的是全局对象,即window
ITMISS
TA贡献1871条经验 获得超8个赞
function test1(){ alert(this.a);//global}
上面格式的声明函数都是全局作用域
而
test1 = function() {} or {test1 : function() {}}
这种格式声明的函数则距具有和变量(属性)相同的作用域
阿波罗的战车
TA贡献1862条经验 获得超6个赞
this的指向是在执行的时候绑定的。this指向和函数调用的方式有关。obj.test()是test作为对象的方法调用的,所以test中的this指向这个对象,因此输出obj中的a;而test1()在虽然在test中执行,但是和作用域无关。作为函数直接调用的,所以这个this指向了window,因此输出window中的a。
添加回答
举报
0/150
提交
取消