【注】this的指向,是在函數(shù)被調(diào)用的時(shí)候確定的膛壹。也就是執(zhí)行上下文被創(chuàng)建時(shí)確定的驾中。
【注】在函數(shù)執(zhí)行過程中,this一旦被確定模聋,就不可更改了肩民。
一、函數(shù)中的this
在一個(gè)函數(shù)上下文中链方,this由調(diào)用者提供持痰,由調(diào)用函數(shù)的方式來決定。如果調(diào)用者函數(shù)被某一個(gè)對(duì)象所擁有祟蚀,那么該函數(shù)在調(diào)用時(shí)工窍,內(nèi)部的this指向該對(duì)象割卖。如果函數(shù)獨(dú)立調(diào)用,那么該函數(shù)內(nèi)部的this,則指向undefined.但是在非嚴(yán)格模式中患雏,當(dāng)this指向undefined時(shí)鹏溯,它會(huì)被自動(dòng)指向全局對(duì)象。
【注】想要準(zhǔn)確確定this指向淹仑,找到函數(shù)的調(diào)用者以及區(qū)分他是否是獨(dú)立調(diào)用就變得十分關(guān)鍵丙挽。
二、使用call,apply顯示指定this
JavaScript內(nèi)部提供了一種機(jī)制匀借,讓我們可以自行手動(dòng)設(shè)置this的指向颜阐。它們就是call與apply。所有的函數(shù)都具有著兩個(gè)方法怀吻。它們除了參數(shù)略有不同瞬浓,其功能完全一樣初婆。它們的第一個(gè)參數(shù)都為this將要指向的對(duì)象蓬坡。
【call】:以一個(gè)一個(gè)的形式傳遞。
【apply】:以數(shù)組的形式傳遞磅叛。
三屑咳、構(gòu)造函數(shù)與原型方法上的this
new的過程:
1.創(chuàng)建一個(gè)新的對(duì)象;
2.將構(gòu)造函數(shù)的this指向這個(gè)新對(duì)象弊琴;
3.指向構(gòu)造函數(shù)的代碼兆龙,為這個(gè)對(duì)象添加屬性,方法等敲董;
4.返回新對(duì)象紫皇;