this:
this指向函数赖以生存的环境对象
函数this值什么时候确定?
在函数被调用时确定
指向谁?
当前拥有this的函数被谁调用
被谁调用就指向谁
this出现在以下位置分别代表什么?
1、函数中 --this指向window
2、在方法中 --this指向这个方法所属的对象
3、构造函数中 -->this指向构造函数所创建的对象
var length=10;
function say(){
var length=30; //length=30; 45行
alert(this.length); //46行
}
var obj={
length:20,
say:say, //50行
run:function(hander){
hander(); //52行
alert(this.length);
}
};
//函数名()-->表示window.函数名()
say();
//46行的this是window调用的,所有this指向window (全局变量)this.length为全局变量
//45行为 var length=30;时,输出为-->10 因为var在块内为局部变量,不是全局变量
//45行为 length=30;时,输出为-->30 因为length=30为全局变量,覆盖了length=10
obj.say(); //50行 把say()->obj.say this-->say() say()-->obj 所以this-->obj 故this.length=obj.length=20
obj.run(say); //52行 hander()=say() 相当于window.say(),与57行say()相同,输出10 ; 然后输出20:因为执行了53行,this->run run->obj 所以this->obj