看代碼:
//定義一個可見的盒子用於綁定點擊事件 var box = document.getElementById('box'); box.x = 'box' //設置執行函數的對象屬性 function outFunc() { this.x = 'outFunc'; box.addEventListener('click', func, false); } outFunc(); function func() { console.log(this.x); //輸出box 說明該this指向的是調用addEventListener的對象 }
代碼2:
function outFunc() { this.x = 'outFunc';//給全局對象window.x賦值(相當於賦值全局變量) box.addEventListener('click', func.bind(this), false); } function func() { console.log(this.x); //輸出outFunc 使用bind設置this的值 }
總結,使用bind綁定的事件才是指向函數,否則指向的是調用addEventListener的對象。