Javascript整理-手写源码系列
- 自定义原生事件
- 创建自定义事件:
const myEvent = new Event()、new CustomEvent()、document.createEvent('CustomEvent')
- 监听自定义事件:
document.addEventListener('myEvent', callback)
- 触发自定义事件:
document.dispatchEvent(myEvent)
- Promise
- 简写版
Promise(不支持异步)
- 手写
Promise(resolve、reject、then)
- 实现
Promise.all()
- 实现
Promise.race()
- 实现
Promise 异步调度器
- 防抖和节流
- 浅拷贝和深拷贝
- 手写浅拷贝
Object.assign
- 浅拷贝其他方法:
concat()、slice()、[...arr]
- 手写深拷贝
JSON.parse(JSON.stringify())
- Lodash 的
_.cloneDeep()
- JQuery 的
$.extend()
- call+bind+apply
- 原生
call 和手写 call
- 原生
bind 和手写 bind
- 原生
apply 和手写 apply
- JSONP
- 基本原理:利用
script 标签的 src 没有跨域限制来完成实现
- 优缺点:只能
GET;兼容性好
- 简单实现:通过
url, params, callbackKey, callback 来定义 JSONP() 方法的参数
- 考虑多次调用:基于简单实现,添加数组保存
callback 的返回
- new
- 3 行代码手写
new
- 手写
new 的 5 个特点
- 完整版手写
new
- 其他
Object.create()
- ES5 实现类继承
instanceof
- 柯里化:求
add(1)(2)(3)
- 迭代器
- Ajax
- 数组扁平化:手撕、
flat()、reduce()
- 数组去重:手撕、
Set、filter()
- 其他