複製鏈接
請複製以下鏈接發送給好友

this關鍵字

鎖定
每一個行為發生的時候,肯定會有一個發生這個行為的主體。在編程語言裏面每一個定義的方法裏,都會有一個this關鍵字,這個this關鍵不是由在那兒定義來決定的,而是由誰來執行的決定的。這是判斷this關鍵。
中文名
this關鍵字
外文名
Keyword 'this'
類    型
對象
適用語言
C ; C++ ; Javascript ; Java ; etc.
所屬學科
計算機科學

目錄

this關鍵字內容簡介

比如説吃飯這個方法它是由上帝來定義的,世界上所有的人來執行。吃飯這個行為發生的時候,主體就是在吃飯的這個人,也就是要有人執行吃飯這個行為。 有時候我們需要在一個行為(方法)裏,能明確知道這個行為是誰來執行的,確切的説就是我要知道誰在吃飯。
function eatSomthing() { this.eat() }
_PEOPLE A;
A.eatSomething(); //等價於A.eat();

this關鍵字原理

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