一文搞懂this指向

前言

那你說一下 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}{評論,你的意見是我進步的財富!}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/248455.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/248455.shtml
英文地址,請注明出處:http://en.pswp.cn/news/248455.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

難怪大家丟掉了postman而選擇 Apifox

前言 當下采用前后端分離模式開發Web應用已經成為氣候&#xff0c;在開發階段有一個不成文的規定則是 項目開發后端先行 但是作為前端開發工程師的我們&#xff0c;難道在搭建完頁面后只能等待后端的接口么&#xff1f;這樣的話我們則完全被后端開發限制住了。在前面跟大家介紹…

mvc 模式和mtc 模式的區別

首先說說Web服務器開發領域里著名的MVC模式&#xff0c;所謂MVC就是把Web應用分為模型(M)&#xff0c;控制器(C)和視圖(V)三層&#xff0c;他們之間以一種插件式的、松耦合的方式連接在一起&#xff0c;模型負責業務對象與數據庫的映射(ORM)&#xff0c;視圖負責與用戶的交互(頁…

HP LaserJet MFP M227_M231雙面打印

雙面打印設置 轉載于:https://www.cnblogs.com/xiexiaokui/p/9261577.html

萬木成林,我種了“Vue技能樹”

初衷 作為Vue技能樹的構建者&#xff0c;一直拖延到現在才來寫這篇文章&#xff0c;主要還是心里沒有底&#xff0c;前面殊不知這顆“樹”是否促進了大家學習的熱情&#xff0c;也不知它給大家帶來了多少收獲。說到我們的Vue技能樹&#xff0c;我作為尤大大的忠實粉絲自就業后…

我看面向對象

已經面向對象編程多年了&#xff0c;漸漸地對面向對象有了越來越深的體會&#xff0c;下面談談我對面向對象的拙見&#xff1a;&#xff09; 面向對象三大特性&#xff1a;封裝、繼承、多態。 首先是封裝&#xff0c;我覺得封裝是面向對象的基礎&#xff0c;封裝讓各種相關的數…

poj 3525

多邊形內最大半徑圓。 哇沒有枉費了我自閉了這么些天&#xff0c;大概五天前我看到這種題可能毫無思路抓耳撓腮舉手投降什么的&#xff0c;現在已經能1A了哇。 還是先玩一會計算幾何&#xff0c;刷個幾百道 嗯這個半平面交二分就闊以解決。雖然隊友說他施展三分套三分***** 想象…

尤雨溪對 2022 Web前端生態趨勢是這樣看的

文章目錄前言開發范式&底層框架方面趨勢基于依賴追蹤范式基于依賴追蹤范式—共同點基于編譯的響應式系統統一模型的優勢和代價基于編譯的運行是優化Vue Vapor Mode&#xff08;input&#xff09;工具鏈原生語言在前端工具鏈中的使用工具鏈的抽象層次基于 Vite 的上層框架上…

bzoj4919 [Lydsy1706月賽]大根堆

Description 給定一棵n個節點的有根樹&#xff0c;編號依次為1到n&#xff0c;其中1號點為根節點。每個點有一個權值v_i。你需要將這棵樹轉化成一個大根堆。確切地說&#xff0c;你需要選擇盡可能多的節點&#xff0c;滿足大根堆的性質&#xff1a;對于任意兩個點i,j&#xff0…

眾多mock工具,這一次我選對了

文章目錄寫在前面Mock介紹Mock能解決什么問題?傳統Mock解決方案Postman接口測試工具Mock js第三方庫Eolink解決方案全局Mock高級Mock返回結果Mock智能內置Mock智能自定義Mock約束條件MockEolink的Mock解決方案的優勢:寫在最后寫在前面 交戰之前&#xff0c;戰士必先利其兵器&…

高并發的理解和使用場景-----特意區別和多線程的關系

一&#xff0c;高并發的理解 1.概念&#xff1a;就是短時間內遇到大量操作請求&#xff0c;導致站點服務器/db服務器資源被占滿甚至嚴重時直接導致宕 2.影響&#xff1a;沒有做高并發預處理的系統會給用戶很差的體驗感&#xff1b; 3.系統好壞的衡量&#xff1a;衡量一個系統的…

async 和 await 原來這么簡單

前言 前端同學們可能都知道 async 和 await 的使用&#xff0c;當被面試官問到 async 和 await 的是什么&#xff1f;或者說一說你對 async、await 的理解&#xff1f;如果我們還是僅僅去闡述我是如何使用的就顯得格外的蒼白無力。今天博主就來帶大家進一步認識我們的 async 和…

研一寒假02-指針_new分配內存_使用new來創建動態數組_使用動態數組_使用delete來釋放new分配的內存...

#---------------------------------指針-----------------------------------# #include <iostream> int main(){ using namespace std; /* 指針引入 */ int updates 6; //聲明一個變量 int* p_updates; //聲明一個指針p_updates,該指針指向一個地址 p_updates&upd…

利用Windows內置工具winsat測試硬盤速度(SSD機械盤對比)

利用Windows內置工具winsat測試硬盤速度&#xff08;SSD&機械盤對比&#xff09; 以下是紅色內容是在命令行運行&#xff1a; C:\Users\Administrator>winsat diskWindows 系統評估工具> 正在運行: 功能枚舉 > 運行時間 00:00:00.00> 正在運行: 存儲評估 -seq …

我為何在 CSDN 樂在其中

文章目錄寫在前面成為博主究竟能得到什么&#xff1f;內在提升耀眼名片豐富眼界提升知名度博客》變現寫在最后寫在前面 各位伙伴大家好&#xff0c;我是幾何心涼&#xff0c;一位不是很大的也不是很小的博主&#xff0c;今天想要跟大家去聊一些比較實在的內容&#xff1b;大家能…

EFLinq查詢

1、無參數查詢var model db.Database.SqlQuery<UserInfo>("select* from UserInfoes ").ToList(); 2、有參查詢var model db.Database.SqlQuery<UserInfo>("select* from UserInfoes where idID ",new SqlParameter("ID",id)).ToL…

實現div可以調整高度(div實現resize)

實現div可以調整高度&#xff08;div實現resize&#xff09; 一、div 實現resize&#xff08;類似textarea&#xff09; 代碼如下&#xff1a; <!DOCTYPE html> <html><head><title>div實現textarea效果</title><style>#textarea {height:…

10分鐘設置免費遠程桌面

文章目錄前言遠程桌面設置教程啟動Amazon Lightsail實例配置遠程桌面啟動遠程桌面使用遠程桌面前言 “你見過洛杉磯凌晨4點的樣子嗎&#xff1f;” 沒有也沒關系&#xff0c;你可以輕松配置一臺位于洛杉磯的免費遠程桌面。 利用Amazon全球可用區&#xff0c;甚至可以在世界各…

樹莓派-開啟spi

1. sudo raspi-config #進入樹莓派配置頁 2. #進入每5項&#xff0c;進入啟用spi即可 轉載于:https://www.cnblogs.com/lobin/p/10459076.html

Lucene全文檢索過程

1. 索引過程&#xff1a; 1) 有一系列被索引文件 2) 被索引文件經過語法分析和語言處理形成一系列詞(Term)。 3) 經過索引創建形成詞典和反向索引表。 4) 通過索引存儲將索引寫入硬盤。 2. 搜索過程&#xff1a; 1) 用戶輸入查詢語句。 2) 對查詢語句經過語法分析和語言分析得到…

tcpdump 用法

原文鏈接 本文原文來自&#xff1a; A tcpdump Tutorial with Examples — 50 Ways to Isolate Traffic TCPDUMP 簡介 TCPDUMP 在一個界面中既提供了強大的功能又簡單易用&#xff0c;無疑已經是網絡分析工具中的老大。 本教程將介紹如何以各種方式隔離流量&#xff1a;從IP&am…