Javascript整理-手写源码系列

800 阅读1分钟
  • 自定义原生事件
    • 创建自定义事件:const myEvent = new Event()new CustomEvent()document.createEvent('CustomEvent')
    • 监听自定义事件:document.addEventListener('myEvent', callback)
    • 触发自定义事件:document.dispatchEvent(myEvent)
  • Promise
    • 简写版 Promise(不支持异步)
    • 手写 Promiseresolverejectthen
    • 实现 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()
    • 数组去重:手撕、Setfilter()
    • 其他