關於Javascript語言中this關鍵字(變量)的用法

 最近很多 Javascript初學者朋友總在問: Javascript 的this 關鍵字的用法。我在這裏索性總結一下 this關鍵字的用法。

 

this 關鍵字是面向對象編程語言中的一個重要概念!在JAVA,C,C#,C++等語言中,this 總是指向當前的運行對象。但是在 Javascript ,由於javascript的動態性以及詞法作用域特性,this的指向在運行時才確定。

 

this 關鍵字的用法其實比較複雜,不過你只要牢記一句話就可以:

“this 變量:永遠指向函數運行時所在的對象,而不是函數被創建時所在的對象。

如果處在匿名函數中、或者不處於任何對象中,this 都指向宿主的根對象(在瀏覽器裏面就是 window)”

 

 

外,javascript中還用 call() 和 apply() 來調用函數,再記住下面這兩句話:

如果是call()、apply()、with(),指定的this是誰,就是誰 !

普通的函數調用,函數被誰調用,this就是誰。

(忽然想起:ECMAScript 5 的嚴格模式中,嚴禁使用 with() 函數,並且ECMAScript 3 中並不推薦使用 with())

 

 

上面的舉例還是太過複雜,不太科學。我舉一個更加直白的說明:Javascript 的 this 很花心,在哪個對象的家裏,就是那個對象的。

而 C,C++,C# 的 this 很專一,無論在哪,都屬於原配!

並且 Javascript 的函數作用域 則像出生地,出生在哪裏,出生地就是哪裏!和運行環境無關!(此處可參照《Javascript權威指南第六版》第8章!不過貌似只有淘寶前端翻譯的紙質版本,人民幣139大洋!這裏有一個《Javascript權威指南第四版》,湊和着看吧。)

 

大致就這樣吧,有問題,請留言。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章