「這是我參與2022首次更文挑戰(zhàn)的第37天赘那,活動(dòng)詳情查看:2022首次更文挑戰(zhàn)」
寫(xiě)在前頭
大多數(shù)小伙伴看技術(shù)書(shū)籍都會(huì)用“啃”來(lái)描述讀書(shū)的直觀感受棋枕,當(dāng)然我也是一個(gè)前端小白赠尾,白的透明那種匾二,但是我在讀技術(shù)書(shū)籍感覺(jué)到“啃”的時(shí)候整份,我希望把我啃紅寶書(shū)第四版的過(guò)程的想法悲酷,總結(jié)帶給大家嘶卧,以供后來(lái)者能夠更快上手言询。
注: 本文由于作者水平原因俯萎,如有錯(cuò)誤之處,懇請(qǐng)大家指正,另外隨著學(xué)習(xí)的深入运杭,體會(huì)的加深夫啊,我會(huì)不斷回來(lái)更新,修改這類文章辆憔。
思維導(dǎo)圖
簡(jiǎn)述
函數(shù)這一章其實(shí)在有一定的編程基礎(chǔ)撇眯,比如學(xué)過(guò)一點(diǎn)c語(yǔ)言就很好讀下去报嵌。整體還是易讀板塊。
10.9函數(shù)內(nèi)部
- 10.9.1 arguments對(duì)象
① 一個(gè)類數(shù)組對(duì)象熊榛。
② arguments對(duì)象包含調(diào)用函數(shù)時(shí)傳入的所有參數(shù)
③箭頭函數(shù)沒(méi)有arguments對(duì)象锚国。
④包含callee 屬性,是一個(gè)指向 arguments 對(duì)象所在函數(shù)的指針来候。
也就是 arguments.callee == 函數(shù)名跷叉。
- 10.9.2 this
this指向不同的對(duì)象會(huì)有不同的結(jié)果。
①標(biāo)準(zhǔn)函數(shù)
this 引用的是把函數(shù)當(dāng)成方法調(diào)用的上下文對(duì)象营搅。
注意: 在網(wǎng)頁(yè)的全局上下文中調(diào)用函數(shù)時(shí)云挟,this 指向 windows
②箭頭函數(shù)
this引用的是定義箭頭函數(shù)的上下文。
注意: 在事件回調(diào)或定時(shí)回調(diào)中調(diào)用某個(gè)函數(shù)時(shí)转质,this 值指向的并非想要的對(duì)象园欣。
解決方法: 箭頭函數(shù)中的 this 會(huì)保留定義該函數(shù)時(shí)的上下文 所以把回調(diào)函數(shù)寫(xiě)成箭頭函數(shù)就可以解決問(wèn)題。
-
10.9.3 caller
①引用
降低耦合度 使用arguments.callee.caller休蟹。顯示指向函數(shù)的源代碼沸枯。
②嚴(yán)格模式
arguments.callee
①在嚴(yán)格模式下訪問(wèn) arguments.callee 會(huì)報(bào)錯(cuò)。
②在非嚴(yán)格模式下則始終是 undefined
-
arguments.caller
安全防護(hù)
以上的改動(dòng)使得第三方代碼無(wú)法檢測(cè)同一上下文中運(yùn)行的其他代碼赂弓。
賦值
不能給函數(shù)的 caller 屬性賦值绑榴,賦值會(huì)導(dǎo)致錯(cuò)誤。
-
10.9.4 new.target
用于檢測(cè)函數(shù)是否使用 new 關(guān)鍵字調(diào)用
①函數(shù)作用
函數(shù)是正常調(diào)用的盈魁,new.target 的值是 undefined翔怎。
②檢測(cè)函數(shù)是否使用new關(guān)鍵字
使用 new 關(guān)鍵字調(diào)用的,則 new.target 將引用被調(diào)用的構(gòu)造函數(shù)杨耙。