天天看點

談談Javascript的this關鍵字(this is not this)

  前言:

    看文章标題你就知道,這篇文章我隻講一個簡單的Javascript的this關鍵字,說它簡單——它又不簡單,因為曾幾何時我也對this關鍵字有些困惑,它也确實會讓不少程式員感到不解——它像是一個身份多變的“指針”,有時僅看代碼都很難分辨出其目前所指向的對象;恰好這兩天我突然想到應該寫篇關于Javascript方面的部落格,也算是為以後的公司技術教育訓練做點兒準備。這篇文章,我可能更傾向于,用代碼來直接的展現我要描述的内容。好的文章不在于它的篇幅長、内容豐富,而在于或者說更重要的是——應該用言簡意赅的内容讓讀者快速、沒有歧義的明白你所要講解的内容;而對于技術文章,代碼往往就是最好的描述。好了,直接切入正題...

   

  

       上面的代碼,就是我們常見的this關鍵字的使用,也在其中添加了必要的代碼注釋,以說明其目前所指代的對象。

  this關鍵字:可以了解為是對象的指針,其具體所指向(對應)的對象要看其(使用)所處的(上下文)環境。其常見的使用場景,所代表的對象大緻可以分為以下兩類:

  1.html标簽(元素)對象:即在html标簽綁定的事件(onclick,onmouseover...)中,this關鍵字表示目前标簽的Dom對象,通過this即可完全控制、操縱此html标簽,如:設定其樣式或綁定其它事件等。

  2.function(類)對象:首先,你可能會有疑問——為什麼叫做function(類)對象?衆所周知,javascript不存在類(class)的概念,但它所具有的特性卻可以比較好的實作"模拟類",如上面的代碼中的:function UserInfo(name, age)方法。在此對象中this關鍵字可以很自然的了解為目前的function(類)對象,其作用和用法跟面向對象程式設計語言(如:C#)裡的this關鍵字很類似,是以,UserInfo這個方法(類),如果轉換為C#代碼,想必你會能更直覺的了解。代碼如下: 

   本文就到此結束,如果還是有疑問的地方,或文中有“誤人子弟”的描述,希望大家能留言提出!

繼續閱讀