关于IE上this关键字在监听事件下的有关问题

关于IE下this关键字在监听事件上的问题!

Xhtml Code:

 

<input name="" type="button" id="aa" value="aaa" />

 

Javascript Code:

 

var btn=document.getElementById("aa");
if(document.all){
    btn.attachEvent("onclick",function(e){
                                       alert(e.srcElement.value);   //*****
                                       });
    }
else{
    btn.addEventListener("click",function(){alert(this.value)},false);
}

 

 

注:标星号的地方我有以下疑问:为什么用this表示当前对象的时候,返回的值是undefind呢?

当然,e.srcElement.value是正常的。

1 楼 clue 2010-07-20  
事件响应时,调用监听函数的作用域是全局
即scope为window

你可以试试alert(this===window)

大部分JS框架封装的事件接口都实现了指定作用域的功能,实际上绑定的函数是另外生成的,在它内部会使用call或apply以传入的作用域调用函数。
2 楼 hao3721 2010-07-20  
好的!谢谢你!关于IE上this关键字在监听事件下的有关问题