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

一.this關(guān)鍵字的解讀
? 1.每一個(gè)函數(shù)內(nèi)部都有一個(gè)關(guān)鍵字是this ,可以讓我們直接使用的
? 2.函數(shù)內(nèi)部的 this 只和函數(shù)的調(diào)用方式有關(guān)系,和函數(shù)的定義方式?jīng)]有關(guān)系
? 3.函數(shù)內(nèi)部的 this 指向誰(shuí),取決于函數(shù)的調(diào)用方式
一.call,apply,bind的區(qū)別
它們的作用是相同的,都是動(dòng)態(tài)的修改當(dāng)前函數(shù)內(nèi)部的this的指向。
1.執(zhí)行方式不同:
call和apply是改變后就立即執(zhí)行函數(shù),bind改變后不會(huì)立即執(zhí)行;而是返回一個(gè)新的函數(shù),需要再次調(diào)用。
2.傳參方式不同:
call 第一個(gè)參數(shù)this指向,從第二個(gè)參數(shù)開(kāi)始就是函數(shù)的參數(shù)。
bind 第一個(gè)參數(shù)this指向,從第二個(gè)參數(shù)開(kāi)始就是函數(shù)的參數(shù),返回的是函數(shù)體,繼續(xù)通過(guò)調(diào)用可再次傳入?yún)?shù)。 apply第一個(gè)參數(shù)this指向,第二個(gè)參數(shù)是數(shù)組,函數(shù)自身的參數(shù)放到數(shù)組里面。
3.修改this的性質(zhì)不同
call、apply只是臨時(shí)的修改一次,修改就是call和apply方法使用的那一次;當(dāng)再次調(diào)用原函數(shù)的時(shí)候,它的指向還是原來(lái)的指向。
bind是永久修改函數(shù)this指向,但是它修改的不是原來(lái)的函數(shù);而是返回一個(gè)修改過(guò)后新的函數(shù),此函數(shù)的this永遠(yuǎn)被改變了,綁定了就修改不了。