前端面試題:手寫call、bind、apply

1. call
用法:
分析:
使用call可以調(diào)用對方的方法并且改變當(dāng)前上下文為context,為立即執(zhí)行。
參數(shù):
· context:? 需要綁定的環(huán)境上下文
· ...args:剩余參數(shù),傳入目標(biāo)方法的參數(shù)
實現(xiàn):
2. apply
apply和call基本上一樣,除了傳參的方式不同,直接貼代碼
3. bind
用法:
分析:
bind返回一個function,不會立即執(zhí)行。
參數(shù):
·?context: 上下文
· ...args: 第一次傳入的參數(shù)
· ...secArgs: 第二次傳的參數(shù)
問題:
bind返回的是一個function,那就有兩種調(diào)用方法,直接調(diào)用和new調(diào)用
該如何處理呢?
其實在構(gòu)造函數(shù)中,一個實例在new的過程中,this的instanceof是會指向當(dāng)前構(gòu)造函數(shù)的,因此可以利用這一特性判斷是new調(diào)用還是直接調(diào)用。
實現(xiàn):
不足之處麻煩點出,謝謝!
標(biāo)簽: