- 1.任何情況下直接在script中寫入的this都是window。
- 2.函數(shù)中的this 非嚴(yán)格模式:this指向window, 嚴(yán)格模式時(shí):this指向undefined。
- 3.箭頭函數(shù)的this this都指向箭頭函數(shù)外上下文環(huán)境的this指向
- 4.對(duì)象中this 對(duì)象屬性的this 指向?qū)ο笸馍舷挛沫h(huán)境的this 對(duì)象方法(普通函數(shù))中的this,指向當(dāng)前對(duì)象(誰執(zhí)行該方法,this就指向誰)
- 5.回調(diào)函數(shù)的this指向
- 1)、 setTimeout,setInterval回調(diào)函數(shù)不管是否是嚴(yán)格模式都會(huì)指向window。
- 2)、通過在函數(shù)內(nèi)執(zhí)行當(dāng)前回調(diào)函數(shù) 非嚴(yán)格模式:this指向window, 嚴(yán)格模式時(shí):this指向undefined。
- 3)遞歸函數(shù)中的this 非嚴(yán)格模式:this指向window, 嚴(yán)格模式時(shí):this指向undefined。 - 使用arguments0執(zhí)行函數(shù)時(shí) this指向arguments。
- 5)事件中的回調(diào)函數(shù),this指向事件偵聽的對(duì)象(e.currentTarget);
- 6、call,apply,bind方法執(zhí)行時(shí)this的指向 - 如果call,apply,bind傳參時(shí),第一個(gè)參數(shù)傳入的不是null或者undefined,傳入什么this指向什么 - 如果第一個(gè)參數(shù)傳入的是null或者undefined ,非嚴(yán)格模式下指向window
- 7、在ES6的類中this的指向 - 構(gòu)造函數(shù)中的this指向?qū)嵗?dāng)前類所產(chǎn)生的新的實(shí)例對(duì)象 - 類中實(shí)例化方法中this指向誰執(zhí)行該方法,this指向誰 - 類中靜態(tài)方法中this執(zhí)行該類或者該類的構(gòu)造函數(shù) - 類中實(shí)例化箭頭方法,this仍然指向當(dāng)前類實(shí)例化的實(shí)例對(duì)象
- 8、ES5的原型對(duì)象中this的指向 - 在原型的方法中,this指向?qū)嵗?dāng)前構(gòu)造函數(shù)的實(shí)例化對(duì)象(誰執(zhí)行該方法,this指向誰); - 三種改變this指向的方式 - 函數(shù)名.call(this,....)this寫誰就指誰。 - 函數(shù)名.apply(this,[參數(shù)1,參數(shù)2,...]) this寫誰就指誰。 - 函數(shù)名. bind (this,1,2,3) this寫誰就指誰。