千鋒教育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指向