this代表當前執行環境(調用)對象,不同的執行環境this指向不同,在函數執行時才確定,并且在運行期間不允許修改并且也是不會改變的
1)構造函數中的this
此this的指向被新創建的實例對象,例如在之前的貪吃蛇小游戲中使用構造函數創建食物與小蛇,在食物中構造函數中this指向創建的食物實例對象,小蛇的this指向小蛇的實例對象
2)DOM事件中的this
2.1內聯事件處理函數中的this指向觸發事件的當前DOM元素
2.2當函數被用作事件處理函數時它的this指向觸發事件的元素
2.3使用注冊事件函數中的this
以上三種事件中的this指向觸發元素的本身
2.4使用注冊事件函數中的this指向是對象

this指向
<script type="text/javascript">
window.onload = function () {
//1.傳統方式注冊事件
document.getElementsByTagName("input")[0].onclick = function () {
alert(this);
}

//2.高級瀏覽器使用addEventListener注冊事件
document.getElementsByTagName("input")[2].addEventListener("click", function () {
alert(this);
})
//3.IE瀏覽器使用attachEvent注冊事件
document.getElementsByTagName("input")[3].attachEvent("onclick", function () {
alert(this);
})
}

</script>

事件中的this
定時器與中的this指向
setTimeout(function () {
alert(this);
}, 1000);
setInterval(function () {
alert(this);

}, 1000);
對象中的this指向調用者,本示例指向obj
var obj = {
age: 18,
f1: function () {
alert(this.age);
}
}
obj.f1();
使用時this時,一定要弄清楚當前環境下的this指向,不然使用時會報空對象或者當前對象下沒有該方法或屬性的錯誤,嚴重的出現bug影響整個程序的安全運行