1、手写实现防抖和节流
1.1 实现防抖函数
防抖函数原理:把触发非常频繁的事件合并成一次去执行 在指定时间内只执行一次回调函数,如果在指定的时间内又触发了该事件,则回调函数的执行时间会基于此刻重新开始计算
1.2 实现节流函数
节流函数原理: 指频繁触发事件时,只会在指定的时间段内执行事件回调,即触发事件间隔大于等于指定的时间才会执行回调函数。
2、手写深拷贝
调用深拷贝方法,若属性为值类型,则直接返回;若属性为引用类型,则递归遍历。这就是我们在解这一类题时的核心的方法。
3、手写实现call方法
call做了什么
1、将函数设为对象的属性
2、执行和删除这个函数
3、指定this到函数并传入给定参数执行函数
4、如果不传入参数,默认指向为 window
4 手写apply方法
5、手写forEach方法
6、手写filter方法
7、手写reduce方法
8 查找字符串中出现最多的字符和个数
9 冒泡排序
冒泡排序的原理如下,从第一个元素开始,把当前元素和下一个索引元素进行比较。如果当前元素大,那么就交换位置,重复操作直到比较到最后一个元素,那么此时最后一个元素就是该数组中最大的数。下一轮重复以上操作,但是此时最后一个元素已经是最大数了,所以不需要再比较最后一个元素,只需要比较到 length - 1 的位置
10 快速排序
快排的原理如下。随机选取一个数组中的值作为基准值,从左至右取值与基准值对比大小。比基准值小的放数组左边,大的放右边,对比完成后将基准值和第一个比基准值大的值交换位置。然后将数组以基准值的位置分为两部分,继续递归以上操作
11 插入排序
12 对象扁平化
13、手写发布订阅模式
创建一个对象
on方法用来把回调函数fn都加到缓存列表中
emit 根据key值去执行对应缓存列表中的函数
off方法可以根据key值取消订阅
14、手写Ajax
创建 XMLHttpRequest 实例
发出 HTTP 请求
服务器返回 XML 格式的字符串
JS 解析 XML,并更新局部页面
不过随着历史进程的推进,XML 已经被淘汰,取而代之的是 JSON。
15、数组去重
16、实现new的过程
new操作符做了这些事:
创建一个全新的对象
这个对象的__proto__要指向构造函数的原型prototype
执行构造函数,使用 call/apply 改变 this 的指向
返回值为object类型则作为new方法的返回值返回,否则返回上述全新对象