千鋒教育JavaScript全套視頻教程(10天學(xué)會(huì)Js,前端javascrip

關(guān)于this指向的一切:
在JavaScript中,this
是一個(gè)特殊的關(guān)鍵字,它在函數(shù)執(zhí)行時(shí)確定其指向的對(duì)象。它的值在每次函數(shù)被調(diào)用時(shí)可能會(huì)不同,取決于調(diào)用函數(shù)的方式。以下是關(guān)于this
指向的一切:
全局環(huán)境中的this
:
在全局環(huán)境中(沒有嵌套在其他函數(shù)內(nèi)部),this
通常指向全局對(duì)象,比如瀏覽器環(huán)境中的window
對(duì)象或Node.js環(huán)境中的global
對(duì)象。在嚴(yán)格模式下,全局環(huán)境中的this
將是undefined
。
函數(shù)調(diào)用中的this
:
當(dāng)函數(shù)被作為普通函數(shù)調(diào)用時(shí),this
通常指向全局對(duì)象。在嚴(yán)格模式下,函數(shù)調(diào)用中的this
會(huì)是undefined
,這是為了避免意外的全局變量修改。
方法調(diào)用中的this
:
當(dāng)函數(shù)作為對(duì)象的方法調(diào)用時(shí),this
指向調(diào)用該方法的對(duì)象。
構(gòu)造函數(shù)中的this
:
當(dāng)使用new
關(guān)鍵字調(diào)用構(gòu)造函數(shù)創(chuàng)建一個(gè)新對(duì)象時(shí),this
會(huì)指向新創(chuàng)建的對(duì)象實(shí)例。
箭頭函數(shù)中的this
:
箭頭函數(shù)沒有自己的this
綁定機(jī)制,它會(huì)捕獲所在上下文的this
值,因此在箭頭函數(shù)中,this
的指向與外部作用域保持一致。
改變this指向
call()
、apply()
和bind()
:
call()
、apply()
和bind()
是函數(shù)對(duì)象的方法,用于顯式地設(shè)置函數(shù)執(zhí)行時(shí)的this
指向。
call()
方法接受一個(gè)指定的this
值和逗號(hào)分隔的參數(shù)列表,其中this
指向傳遞的第一個(gè)參數(shù)。
函數(shù)會(huì)立即執(zhí)行
apply()
方法與call()
類似,但它接受一個(gè)指定的this
值和參數(shù)數(shù)組,其中this
指向傳遞的第一個(gè)參數(shù)。
bind()
方法不會(huì)立即調(diào)用函數(shù),而是創(chuàng)建一個(gè)綁定了指定this
值的新函數(shù),稍后可以再次調(diào)用該新函數(shù)。
箭頭函數(shù)的this
值無法改變因?yàn)樗麤]有自己的this指向