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