IE的attachEvent中有什么'this'

sha*_*jia 7 javascript internet-explorer javascript-events

我厌倦了编写jQuery,所以我决定学习一些原始的JavaScript.IE的attachEvent中的某些东西让我很困惑.这是代码.

var btn = document.getElementById('myBtn');

btn.onclick = function(){
   alert(window.event.srcElement === this); //true, I know why.
};

btn.attachEvent('onclick', function(event){
   alert(event.srcElement === this); //fasle, but why?
});
Run Code Online (Sandbox Code Playgroud)

我尝试使用IE的内置调试工具,但它只是告诉我'这个'是一个对象,但仅此而已......那么IE的attachEvent中的'this'是什么?

Mic*_*Liu 7

在由特定于IE的attachEvent方法绑定的事件处理程序中,this引用全局window对象:

btn.attachEvent('onclick', function(event) {
    alert(this === window); // true
}
Run Code Online (Sandbox Code Playgroud)

相反,在由标准addEventListener方法绑定的事件处理程序中,this引用从中触发事件处理程序的DOM元素.