手写bind
Contents
1 简版bind
- bind是Function.prototype上的方法
|
|
- 接收的第一个参数是新的this,返回一个新函数
|
|
- bind中的this就是调用bind的函数;返回的新函数的this就是bind的第一个参数,使用call绑定并调用,新函数的返回值就是绑定新this的原函数的返回值
|
|
- bind接收(多次)参数,即
fn.bind(this, p1)(p2) || fn.bind(this, p1, p2)
|
|
2 进阶bind(不能用bind同时期出现的api)
- 思路:
- 在arguments中截取this和参数(不能直接slice)
- 不能使用const和剩余参数语法
- 记得进行错误处理
|
|
3 bind后的函数支持new
- 示例:
|
|
- 思路
- 通过原型链判断是new的还是默认的
Author gsemir
LastMod 2022-07-20