前言
那你說一下 js 中的 this 指向吧!
這句話已經成為面試官口中的高頻面試題,作為前端開發的我們,你真的搞懂了 this 指向了嗎?快來跟我一起來查漏補缺吧!通過幾個小案例讓大家更能直白的理解 this 指向。
很多前端伙伴問題有沒有體系的面試題?
今天為大家推薦一款刷題神奇哦 點擊鏈接訪問牛客網
各大互聯網大廠面試真題。從基礎到入階乃至原理刨析類面試題 應有盡有,趕快來裝備自己吧!助你面試穩操勝券,solo全場面試官
this 指向
默認window
首先來說我們的 this 指向默認是指向的 window
new 綁定
如果函數或者方法調用之前帶有關鍵字 new,會構造一個新對象并把它綁定到所調用函數的this上。稱為 new 綁定
箭頭函數
箭頭函數就比較特殊了,他沒有明確的指向,他里面的 this 其實是根據他的上級來定的,也就是他的 this 指向等于他的上級。
隱形綁定
大家應該根據字面意思猜測到,其實就是我們沒有通過代碼去綁定 this 的指向,但是我們的 this 也被秘密的綁定到了某個地方
大家可以看出我們通過obj.behavior()
調用了 fun1 函數 打印的 this 其實是我們函數的調用者 obj
顯式綁定
大家也是能夠從字面意思看明白,就是我們通過代碼的方式去綁定,通過 call()、apply()、bind()方法把對象綁定到 this 上,叫做顯式綁定。
<script>var fun1= function(params) {console.log('我的名字是:'+this.name)}var obj={name:'幾何',behavior:fun1}var obj1={name:'心涼',}obj.behavior()
</script>
看到上面的代碼片段大家應該可以猜到我們的打印一定是 ‘我的名字是:幾何’,這個不難理解因為我們在fun1函數中的 this 指向的就是我們的函數調用者 obj 所以相當于 console.log('我的名字是:'+obj.name)
,如果我想要打印的結果為‘我的名字是:心涼’,其實我們這里只需要改變 this 的指向就可以了,讓他指向 obj1
我用了三種方式去改變 this 的指向,通過打印臺看出我們的三種方式都實現了效果,只是第三種的寫法上多了一個 ()
,難鬧他們就沒有區別了嗎?當然有區別:傳參:他們的第一個參數都為 this 要綁定的對象,差距就在第二個參數了,機制:call()和apply()是立即執行函數,bind()不會立即執行函數,而是會返回一個修改過this的新函數。
obj.behavior.call(obj1,22,'北京')//我的名字是:心涼,我今年22歲,我現在在北京
obj.behavior.apply(obj1,[22,'北京'])//我的名字是:心涼,我今年22歲,我現在在北京
obj.behavior.bind(obj1,22,'北京')()//我的名字是:心涼,我今年22歲,我現在在北京
很多前端伙伴問題有沒有體系的面試題?
今天為大家推薦一款刷題神奇哦 點擊鏈接訪問牛客網
各大互聯網大廠面試真題。從基礎到入階乃至原理刨析類面試題 應有盡有,趕快來裝備自己吧!助你面試穩操勝券,solo全場面試官
本期圖書推薦
過去網絡安全距離我們很遠,只要沒有被攻擊便可以忽略,而現在如果存在安全漏洞且一不小心被成功攻擊,就可能導致很多公司財務等重要數據被勒索病毒感染,造成巨大經濟損失!近幾年來,國家展開了護網行動,加上各種機構經常組織CTF比賽等,網絡安全越來越火,人才缺口也越來越大。“會滲透,是懂安全的基礎;會漏掃,是懂滲透的基礎;去實戰,是檢驗能力的標準”此書可以給網絡安全領域的專業人士或想入門的人士答疑解惑,是您必不可少的一本專業圖書!
本書從網絡攻防實戰的角度,對Web漏洞掃描利用及防御進行全面系統的研究,由淺入深地介紹了在滲透過程中如何對Web漏洞進行掃描、利用分析及防御,以及在漏洞掃描及利用過程中需要了解和掌握的基礎技術。
全書共分10章,包括漏洞掃描必備基礎知識、域名信息收集、端口掃描、指紋信息收集與目錄掃描、Web漏洞掃
描、Web常見漏洞分析與利用、密碼掃描及暴力破解、手工代碼審計利用與漏洞挖掘、自動化的漏洞挖掘和利用、Web漏洞掃描安全防御,基本涵蓋了Web漏洞攻防技術體系的全部內容。書中還以一些典型漏洞進行掃描利
用及實戰,通過漏洞掃描利用來還原攻擊過程,從而可以針對性地進行防御。
寫在最后
? 改變能改變的,接受不能改變的!\textcolor{pink}{ 改變能改變的,接受不能改變的!}改變能改變的,接受不能改變的!
👍 點贊,你的認可是我創作的動力!\textcolor{green}{點贊,你的認可是我創作的動力!}點贊,你的認可是我創作的動力!
?? 收藏,你的青睞是我努力的方向!\textcolor{green}{收藏,你的青睞是我努力的方向!}收藏,你的青睞是我努力的方向!
?? 評論,你的意見是我進步的財富!\textcolor{green}{評論,你的意見是我進步的財富!}評論,你的意見是我進步的財富!