千鋒教育-做有情懷、有良心、有品質(zhì)的職業(yè)教育機(jī)構(gòu)

手機(jī)站
千鋒教育

千鋒學(xué)習(xí)站 | 隨時(shí)隨地免費(fèi)學(xué)

千鋒教育

掃一掃進(jìn)入千鋒手機(jī)站

領(lǐng)取全套視頻
千鋒教育

關(guān)注千鋒學(xué)習(xí)站小程序
隨時(shí)隨地免費(fèi)學(xué)習(xí)課程

當(dāng)前位置:首頁  >  技術(shù)干貨  > this的指向和改變方向

this的指向和改變方向

來源:千鋒教育
發(fā)布人:syq
時(shí)間: 2022-07-28 15:06:44 1658992004

  1.普通函數(shù)調(diào)用this的指向window

this的指向和改變方向22

this的指向和改變方向23

  這里this指向的是window

  2.構(gòu)造函數(shù)調(diào)用, 此時(shí) this 指向 實(shí)例對(duì)象

this的指向和改變方向68

this的指向和改變方向69

  這里的this 指向的就是let的 兩個(gè)實(shí)例對(duì)象p1和p2

  3.對(duì)象方法調(diào)用, 此時(shí) this 指向 該方法所屬的對(duì)象

this的指向和改變方向131

this的指向和改變方向132

  4.箭頭函數(shù)中this沒有明確指向,會(huì)向上一級(jí)(宿主對(duì)象)尋找

this的指向和改變方向166

  5.通過事件綁定的方法, 此時(shí) this 指向 綁定事件的對(duì)象

this的指向和改變方向200

this的指向和改變方向201

  6.定時(shí)器中this指向的也是window

this的指向和改變方向225

this的指向和改變方向226

  當(dāng)this碰到return時(shí) 又產(chǎn)生什么呢?

  再看一個(gè)

this的指向和改變方向251

  再來

this的指向和改變方向258

this的指向和改變方向263

  什么意思呢?

  如果返回值是一個(gè)對(duì)象,那么this指向的就是那個(gè)返回的對(duì)象,如果返回值不是一個(gè)對(duì)象那么this還是指向函數(shù)的實(shí)例。

  還有一點(diǎn)就是雖然null也是對(duì)象,但是在這里this還是指向那個(gè)函數(shù)的實(shí)例,因?yàn)閚ull比較特殊。

this的指向和改變方向264

  知識(shí)點(diǎn)補(bǔ)充:**

  1.在嚴(yán)格版中的默認(rèn)的this不再是window,而是undefined。

  二、更改this指向的三個(gè)方法

  1.call() 方法

this的指向和改變方向461

this的指向和改變方向462

  沒錯(cuò),就像上面說的,普通函數(shù)的this指向window,現(xiàn)在讓我們更改this指向

this的指向和改變方向506

this的指向和改變方向507

  2. apply()

this的指向和改變方向520

  apply方法和call方法有些相似,它也可以改變this的指向,也可以有多個(gè)參數(shù),但是不同的是,第二個(gè)參數(shù)必須是一個(gè)數(shù)組,如下:

this的指向和改變方向588

  **

  //注意如果call和apply的第一個(gè)參數(shù)寫的是null,那么this指向的是window對(duì)象

this的指向和改變方向642

  3.bind()**

  bind方法和call、apply方法有些不同,如下

this的指向和改變方向682

  我們發(fā)現(xiàn)代碼沒有被打印,對(duì),這就是bind和call、apply方法的不同,實(shí)際上bind方法返回的是一個(gè)修改過后的函數(shù)。

this的指向和改變方向746

  函數(shù)c看看,能不能打印出對(duì)象a里面的user

this的指向和改變方向771

  同樣bind也可以有多個(gè)參數(shù),并且參數(shù)可以執(zhí)行的時(shí)候再次添加,但是要注意的是,參數(shù)是按照形參的順序進(jìn)行的。

this的指向和改變方向827

  總結(jié): call和apply都是改變上下文中的this并立即執(zhí)行這個(gè)函數(shù),bind方法可以讓對(duì)應(yīng)的函數(shù)想什么時(shí)候調(diào)就什么時(shí)候調(diào)用,并且可以將參數(shù)在執(zhí)行的時(shí)候添加,這是它們的區(qū)別。

  更多關(guān)于“前端培訓(xùn)”的問題,歡迎咨詢千鋒教育在線名師。千鋒教育多年辦學(xué),課程大綱緊跟企業(yè)需求,更科學(xué)更嚴(yán)謹(jǐn),每年培養(yǎng)泛IT人才近2萬人。不論你是零基礎(chǔ)還是想提升,都可以找到適合的班型,千鋒教育隨時(shí)歡迎你來試聽。

  注:本文部分文字和圖片來源于網(wǎng)絡(luò),如有侵權(quán),請(qǐng)聯(lián)系刪除。版權(quán)歸原作者所有!

 

tags:
聲明:本站稿件版權(quán)均屬千鋒教育所有,未經(jīng)許可不得擅自轉(zhuǎn)載。
10年以上業(yè)內(nèi)強(qiáng)師集結(jié),手把手帶你蛻變精英
請(qǐng)您保持通訊暢通,專屬學(xué)習(xí)老師24小時(shí)內(nèi)將與您1V1溝通
免費(fèi)領(lǐng)取
今日已有369人領(lǐng)取成功
劉同學(xué) 138****2860 剛剛成功領(lǐng)取
王同學(xué) 131****2015 剛剛成功領(lǐng)取
張同學(xué) 133****4652 剛剛成功領(lǐng)取
李同學(xué) 135****8607 剛剛成功領(lǐng)取
楊同學(xué) 132****5667 剛剛成功領(lǐng)取
岳同學(xué) 134****6652 剛剛成功領(lǐng)取
梁同學(xué) 157****2950 剛剛成功領(lǐng)取
劉同學(xué) 189****1015 剛剛成功領(lǐng)取
張同學(xué) 155****4678 剛剛成功領(lǐng)取
鄒同學(xué) 139****2907 剛剛成功領(lǐng)取
董同學(xué) 138****2867 剛剛成功領(lǐng)取
周同學(xué) 136****3602 剛剛成功領(lǐng)取
相關(guān)推薦HOT
云快照與自動(dòng)備份有什么區(qū)別?

1、定義和目標(biāo)不同云快照的主要目標(biāo)是提供一種快速恢復(fù)數(shù)據(jù)的方法,它只記錄在快照時(shí)間點(diǎn)后的數(shù)據(jù)變化,而不是所有的數(shù)據(jù)。自動(dòng)備份的主要目標(biāo)...詳情>>

2023-10-14 12:48:59
服務(wù)器為什么要用Linux?

服務(wù)器為什么要用Linux作為服務(wù)器操作系統(tǒng)的優(yōu)選,Linux在眾多選擇中脫穎而出。Linux作為服務(wù)器操作系統(tǒng)的優(yōu)選,有其獨(dú)特的優(yōu)勢和特點(diǎn)。包括其...詳情>>

2023-10-14 12:34:11
ORM解決的主要問題是什么?

ORM(對(duì)象關(guān)系映射)解決的主要問題是將關(guān)系數(shù)據(jù)庫與面向?qū)ο缶幊讨g的映射困境。在傳統(tǒng)的關(guān)系數(shù)據(jù)庫中,數(shù)據(jù)以表格的形式存儲(chǔ),而在面向?qū)ο?..詳情>>

2023-10-14 12:26:19
Go為什么不支持三元運(yùn)算符?

Go為什么不支持三元運(yùn)算符Go語言是一種以簡潔和有效性為目標(biāo)的編程語言,因此在設(shè)計(jì)過程中,Go的設(shè)計(jì)者刻意排除了一些他們認(rèn)為可能導(dǎo)致復(fù)雜性或...詳情>>

2023-10-14 12:12:36
IT通常說的平臺(tái)是什么意思?

在信息技術(shù)(IT)領(lǐng)域,”平臺(tái)”這個(gè)詞有著廣泛的含義,它常常指代支持軟件應(yīng)用開發(fā)和運(yùn)行的基礎(chǔ)框架和環(huán)境。以下是對(duì)”平臺(tái)”這個(gè)概念的更深入...詳情>>

2023-10-14 11:55:36