将当前函数添加到context上, 调用并传入参数。
call()
ES5 写法
ES6 写法
- 1.判断当前
this
是否为函数,防止Function.prototype.myCall()
直接调用
- 2.
context
为可选参数,如果不传的话默认上下文为 window
- 3.为
context
创建一个 Symbol
(保证不会重名)属性,将当前函数赋值给这个属性
- 4.处理参数,传入第一个参数后的其余参数
- 4.调用函数后即删除该
Symbol
属性
测试代码
apply()
ES5 写法
ES6写法
测试代码
bind()
简单版本
测试代码
进阶版本: 函数柯里化、new
关键字
测试代码
扩展阅读