摘要:被調用的函數一定是在當前函數體內被調用的。所以,當前函數并沒有暫停,只是交出了控制權而已。它代表函數運行時,自動生成的一個內部對象,只能在函數內部使用。
函數
調用一個函數會暫停當前函數的執行,傳遞控制權和參數給新調用的函數,除了聲明時傳遞的形式參數外,每個函數還會接受兩個附加的參數: this和arguement.
其實在讀到這句話的的時候,我產生了兩個莫名其妙的疑問
1."調用一個函數會暫停當前函數的執行",這句話剛讀起來覺得沒什么問題,但是一分析我就覺得很不對。被調用的函數一定是在當前函數體內被調用的。所以,當前函數并沒有暫停,只是交出了控制權而已。
2."每個函數還會接受兩個附加的參數: this和argument",現在又有一個疑問,this和arguement是什么?至于arguement其實只是代表了實參列表,通過argument我們可以獲取在參數調用實傳遞過來的參數
曾經看過阮一峰大神的一篇博客是這么來定義javascript的this的。
它代表函數運行時,自動生成的一個內部對象,只能在函數內部使用。隨著函數使用場合的變化,this的值也會發生改變但是又一個總的原則,那就是this值得是,調用函數的那個對象。
我覺得這個定義還是很明白易懂的,這里主要透漏出兩個重要的信息。其一:它是在函數調用時生成的而不是在函數定義時生成的。其二:它指向的是調用當前函數的對象。
在《你不知道的 javascript》中定義了"調用棧",可以通過逐步的分析調用棧來找出this的最終指向,而在本書中則列出了四種調用模式。調用模式不同則this的指向也不同。
1.方法調用模式下this會被綁定到當前的對象
這里首先必須要將方法和函數區分開,方法就是當一個函數被當作一個對象的屬性時稱其為方法
2.純函數調用模式下this會被綁定到全局變量
3.構造器調用模式下this會被綁定到實例對象上
4.apply/call調用模式下可以自定義綁定到特定的對象上
理解閉包,首先要理解js的作用域,內部函數可以訪問定義它的外部函數的參數和變量。但是當我們想要訪問函數內部的變量時,就要用到閉包了。
閉包的主要作用其實有兩個
1.其中一個就是訪問函數內部定義的變量
2.另外就是可以讓這些變量常駐內存
曾經看過一個關于閉包的定義
閉包是一個函數,而它"記住了周圍發生的一切"。表現為由一個函數體中定義了另一個函數,閉包是一個表達式(一般是函數),它具有自由變量以及綁定這些變量的環境(該環境封閉了這個表達式)。(閉包,就是封閉了外部函數作用域中變量的內部函數。但是,如果外部函數不返回這個內部函數,閉包的特性無法顯現。如果外部函數返回這個內部函數,那么返回的內部函數就成了名副其實的閉包。此時,閉包封閉的外部變量就是自由變量,而由于該自由變量存在,外部函數即便返回,其占用的內存也得不到釋放。)
上面這句換主要說出了閉包的兩個關鍵點:
閉包嵌套在外部函數內部
外部函數將閉包返回
function outer() { var i= 10 function inner() { console.log(i++) } return inner() } var result = outer() result() //10 result() //11 result() //12繼承
javascript的繼承是基于原型(proptype)的。我對原型的理解是,其實人家本來是一個沒有車廂的火車頭,然后我們就可以給這個火車頭安裝各種各樣的車廂,長的扁的,圓的方的(當然沒有圓的車廂哈),雖然車廂可以各種各樣,但是火車頭只有一個,各種車廂都可以用這個火車頭。
實現繼承主要是為了實現代碼的重用,以及數據的共享,對于各種公用的屬性,我們可以將它放在proptyps里面,例如:
function Train(railway_carriage) { this.railway_carriage = railway_carriage //各種安裝車廂 }
但是當我們想要給各種列車都設置一個相同的火車頭,如果是這樣
function Train(railway_carriage, locomotive) { this.railway_carriage = carriage this.locomotive = locomotive }
如果這樣的話,每一個列車實例都會有一個各自的locomotive屬性,但是這些屬性又是相同的,這樣的結果明顯是不符合我們的本意的。
那么,這樣的話我們就得用刀proptype屬性了
Train.proptype = { locomotive: "D9999" }
這樣所有的Train實例就回共享locomotive屬性了
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/78707.html
摘要:年,保羅格雷厄姆在他的一篇文章中提到,他的公司決定使用一門編程語言。然而,仍未得到與其他語言同等的尊重。被評為年開發者調查中最受歡迎的框架。是中最流行的編程語言。也就是說,我認為質疑是否是一種真正的編程語言的時代已經過去。 原文:JavaScript-A First-Class Language At Last作者:Tom Goldenberg譯者:LeviDing聲明:轉載請聯系本人...
摘要:年,保羅格雷厄姆在他的一篇文章中提到,他的公司決定使用一門編程語言。然而,仍未得到與其他語言同等的尊重。被評為年開發者調查中最受歡迎的框架。是中最流行的編程語言。也就是說,我認為質疑是否是一種真正的編程語言的時代已經過去。 原文:JavaScript-A First-Class Language At Last作者:Tom Goldenberg譯者:LeviDing聲明:轉載請聯系本人...
摘要:年,保羅格雷厄姆在他的一篇文章中提到,他的公司決定使用一門編程語言。然而,仍未得到與其他語言同等的尊重。被評為年開發者調查中最受歡迎的框架。是中最流行的編程語言。也就是說,我認為質疑是否是一種真正的編程語言的時代已經過去。 原文:JavaScript-A First-Class Language At Last作者:Tom Goldenberg譯者:LeviDing聲明:轉載請聯系本人...
摘要:然而,雖然先生對無所不知,被譽為世界的愛因斯坦,但他的語言精粹并不適合初學者學習。即便如此,在后面我還是會建議把當做補充的學習資源。但目前為止,依然是學習編程的好幫手。周正則表達式,對象,事件,閱讀權威指南第,,,章。 既然你找到這篇文章來,說明你是真心想學好JavaScript的。你沒有想錯,當今如果要開發現代網站或web應用(包括互聯網創業),都要學會JavaScript。而面對泛...
摘要:是事件驅動的,只根據用戶的操作做出相應的反應處理。中的數據要求帶有明確的類型,不要求。這些小小的變化可能會產生嚴重的意想不到的后果,因此有必要撤銷這些變化。的優勢相比于,也有一些明顯優勢。因此在應對大型開發項目時,使用更加合適。 showImg(https://segmentfault.com/img/bV1Dx7?w=740&h=322); TypeScript 和 JavaScri...
摘要:學習最好的方法之一是通過視頻教程進行在線學習。這里列出十個免費在線學習的地址,讓你的學習更方便更有效。是一個非常好的免費在線學習得網站。為初學者增加了大量的指南和其他資源。在這里,你可以找到有關和的免費在線課程。 我們都聽說過 JavaScript 這個術語,但我們中只有少數人知道它的用法和應用。這里的我們中的少數是指技術青年、網絡程序員和IT專業人員。但是,對于外行來說,JavaS...
閱讀 1038·2021-11-15 18:11
閱讀 3162·2021-09-22 15:33
閱讀 3458·2021-09-01 11:42
閱讀 2654·2021-08-24 10:03
閱讀 3615·2021-07-29 13:50
閱讀 2925·2019-08-30 14:08
閱讀 1274·2019-08-28 17:56
閱讀 2259·2019-08-26 13:57