记常遇到的JS手写
面试中遇到的一些JS手写题以及一些常见的JS手写题记录。
手写 call、apply 和 bind
call、apply和bind三者的用法和区别
call、apply和bind这三个函数的第一个参数都是this指向函数,第二个参数有差别
- call后面的参数都是直接以逗号分隔开依次写在后面传递的;
- apply的后一个参数是以数组形式传递的,有多个参数都需要写在数组中进行传递;
- bind的除了返回是函数之外,他的参数和call一样;
三者参数不限定是string类型,允许是各种类型,包括函数、object等。
手写 call
1 | // 原型myCall方法 |
手写 apply
1 | Function.prototype.myApply = function (context) { |
手写 bind
1 | Function.prototype.myBind = function (context) { |
手写 flat
1 | // 实现一个flat |
函数柯里化
柯里化(Currying)是把接受多个参数的函数变换成接受一个单一参数(最初函数的第一个参数)的函数,并且返回接受余下的参数且返回结果的新函数的技术。
1 | function curry(fn, ...args) { |
手写 Promise
1 | // 基础架构 |
评论
评论插件加载失败
正在加载评论插件