前端面试题:手写call、bind、apply

1. call
用法:
分析:
使用call可以调用对方的方法并且改变当前上下文为context,为立即执行。
参数:
· context: 需要绑定的环境上下文
· ...args:剩余参数,传入目标方法的参数
实现:
2. apply
apply和call基本上一样,除了传参的方式不同,直接贴代码
3. bind
用法:
分析:
bind返回一个function,不会立即执行。
参数:
· context: 上下文
· ...args: 第一次传入的参数
· ...secArgs: 第二次传的参数
问题:
bind返回的是一个function,那就有两种调用方法,直接调用和new调用
该如何处理呢?
其实在构造函数中,一个实例在new的过程中,this的instanceof是会指向当前构造函数的,因此可以利用这一特性判断是new调用还是直接调用。
实现:
不足之处麻烦点出,谢谢!