1. 定义一个函数fn1(),函数中的this指向window。此时,调用fn1()实际上相当于是window.fn1(); 因此,this指向window
function fn1(){
alert('alert2'+this);//此时提示内容为[object window]
};
//同样地,对于函数也是一样的
fn1();//实际上也就是window.fn1()
2. 点击事件是已定义的函数,this指向产生点击事件的元素。
var oBtn=document.getElementById('btn1');
//点击事件是已定义的函数
oBtn.onclick=fn1;//此时提示内容为[object HTMLInputElement]
3. 点击事件是匿名函数,this指向产生点击事件的元素。
var oBtn=document.getElementById('btn1');
// 点击事件是匿名函数
oBtn.onclick=function(){
alert('alert3'+this);//此时提示内容为[object HTMLInputElement]
};
4. 点击事件是匿名函数,匿名函数内部调用已定义的函数fn1(),此时fn1()里面的this指向window。更通俗一点,只要遇到这样已定义的函数,里面的this都指向window。
oBtn.onclick=function(){
fn1(); //只要遇到这样调用的函数,this都是window
};
实例:得到点击的元素,并对样式进行修改。
aLi[i].onmouseover=function(){
var temp=this.getElementsByTagName('div');
temp[0].style.display='block';
};
源代码:
this的指向