this關鍵字

每一個行為發生的時候,肯定會有一個發生這個行為的主體。

概述,原理,套用,

概述

比如說吃飯這個方法它是由上帝來定義的,世界上所有的人來執行。吃飯這個行為發生的時候,主體就是在吃飯的這個人,也就是要有人執行吃飯這個行為。 有時候我們需要在一個行為(方法)里,能明確知道這個行為是誰來執行的,確切的說就是我要知道誰在吃飯。
function eatSomthing() { this.eat }
程式語言裡面每一個定義的方法裡,都會有一個this關鍵字,這個this關鍵不是由在那兒定義來決定的,而是由誰來執行的決定的。這是判斷this關鍵。

原理

比如:這個人是張三,那么吃飯的主體就是“張三”,
張三.eat();//這個吃飯里的this就是張三這個對象。
也就是判斷(.)前面的對象是誰,那這個this就是誰。 但有的方法是直接執行的,前面沒有點,就更沒有執行對象,那就this關鍵是誰呢?
像alert方法,直接執行的,那alert方法裡的this是誰呢?凡是可以像alert這樣直接運行的方法,都是全局方法(全局方法叫函式),全局方法的執行,都是相當於前面省略掉window.,也就是說alert()相當於window.alert(),那這樣直接運行的方法裡的this關鍵字,肯定就是window了。
*注意:方法裡的this表示的是那個對象,是由誰來執行決定的。和在那兒定義的沒有關係。
補充:this表示的對象,是這個方法活動的"上下文"。所謂的"上下文",也就是表示當前的這些代碼的活動範圍,當前的活動(代碼的執行)在那個對象上的發生的意思。
吃飯這個活動,是在張三這個對象上發生的,則張三是吃飯的下下文。在body里去查找的div元素,則body是這個查找活動的上下文。那這個this,就是這個方法運行活動的範圍了。
方法裡this當前這個方法運行的上下文,但上下文不僅限於是this(就是整體與個體的區別)。

套用

var innerHTML = 'outerWindow';
window.onload = function() {
var innerHTML = 'window';
var obj = {
innerHTML: 'obj',
fn: function() { alert(this.innerHTML);
}
}
obj.fn(); //輸出結果obj
var fn = obj.fn; //輸出結果window
fn() //此處window省略
//this關鍵字是誰,和這個方法在那個環境衛生里執行沒關係密切。和.前面的主體有關 fn.fn(); //提示錯誤 }

相關詞條

熱門詞條

聯絡我們