一 目录
不折腾的前端,和咸鱼有什么区别
| 目录 |
|---|
| 一 目录 |
| 二 jsliang 整理 |
| 三 参考文献 |
| 3.1 手写系列文章 |
| 3.2 手写 call/bind/apply |
| 3.3 手写深拷贝和浅拷贝 |
| 3.4 手写 Promise |
二 jsliang 整理
本系列有 7 篇文章,19 个手写方法,大纲 32 个知识点。
手写系列存放位置:
各个手写具体实现:
- 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
- 3 行代码手写
- 其他
-
Object.create() - ES5 实现类继承
-
instanceof - 柯里化:求
add(1)(2)(3) - 迭代器
- Ajax
- 数组扁平化:手撕、
flat()、reduce() - 数组去重:手撕、
Set、filter() - 其他
-
三 参考文献
本系列有 46 篇参考文献。
3.1 手写系列文章
- 前端面试常见的手写功能【阅读建议:30min】
- 32个手写JS,巩固你的JS基础(面试高频)【阅读建议:30min】
- 22 道高频 JavaScript 手写面试题及答案【阅读建议:30min】
- 「中高级前端面试」JavaScript手写代码无敌秘籍【阅读建议:30min】
- 几道JS代码手写题以及一些代码实现【阅读建议:30min】
- 三元-手写代码系列【阅读建议:30min】
- CORS 原理及实现【阅读建议:30min】
- JSONP 原理及实现【阅读建议:30min】
- jsonp的原理与实现【阅读建议:10min】
- 20道JS原理题助你面试一臂之力!【阅读建议:30min】
- 7分钟理解JS的节流、防抖及使用场景【阅读建议:10min】
- 防抖和节流原理分析【阅读建议:10min】
- 前端性能相关:防抖、节流【阅读建议:5min】
- 面试官(6): 写过『通用前端组件』吗?【阅读建议:20min】
- 面试官:既然React/Vue可以用Event Bus进行组件通信,你可以实现下吗?【阅读建议:20min】
- 浅谈 instanceof 和 typeof 的实现原理【阅读建议:10min】
- 解锁多种JavaScript数组去重姿势【阅读建议:20min】
- 如何在 JavaScript 中更好地使用数组【阅读建议:10min】
- 7种方法实现数组去重【阅读建议:20min】
3.2 手写 call/bind/apply
- MDN - Arguments【阅读建议:5min】
- MDN - call【阅读建议:5min】
- MDN - apply【阅读建议:5min】
- MDN - bind【阅读建议:5min】
- 不用call和apply方法模拟实现ES5的bind方法【阅读建议:1h】
- JavaScript深入之call和apply的模拟实现【阅读建议:20min】
- this、apply、call、bind【阅读建议:30min】
- 面试官问:能否模拟实现JS的call和apply方法【阅读建议:10min】
- JavaScript基础心法—— call apply bind【阅读建议:20min】
- 回味JS基础:call apply 与 bind【阅读建议:10min】
3.3 手写深拷贝和浅拷贝
- 如何写出一个惊艳面试官的深拷贝?【阅读建议:2h】
- 深拷贝的终极探索(90%的人都不知道)【阅读建议:1h】
- JavaScript基础心法——深浅拷贝【阅读建议:30min】
- JavaScript专题之深浅拷贝【阅读建议:20min】
- javaScript中浅拷贝和深拷贝的实现【阅读建议:20min】
- 深入剖析 JavaScript 的深复制【阅读建议:20min】
- 「JavaScript」带你彻底搞清楚深拷贝、浅拷贝和循环引用【阅读建议:20min】
- 面试题之如何实现一个深拷贝【阅读建议:30min】
- 面试官:请你实现一个深克隆【阅读建议:10min】
3.4 手写 Promise
- 100 行代码实现 Promises/A+ 规范【阅读建议:30min】
- 最简实现 Promise,支持异步链式调用(20行)【建议阅读:20min】
- BAT 前端经典面试问题:史上最最最详细的手写 Promise 教程【阅读建议:30min】
- 一起学习造轮子(一):从零开始写一个符合Promises/A+规范的promise【阅读建议:大概看了遍,没前面剖析的清晰】
- Promise实现原理(附源码)【阅读建议:大概看了遍,没前面剖析的清晰】
- 剖析Promise内部结构,一步一步实现一个完整的、能通过所有Test case的Promise类【建议阅读:写得比较细,没前面剖析的清晰】
- 小邵教你玩转promise源码【建议阅读:写得比较细,没前面剖析的清晰】
- Promise不会??看这里!!!史上最通俗易懂的Promise!!!【建议阅读:写得比较细,没前面剖析的清晰】
jsliang 的文档库由 梁峻荣 采用 知识共享 署名-非商业性使用-相同方式共享 4.0 国际 许可协议 进行许可。
基于 github.com/LiangJunron… 上的作品创作。
本许可协议授权之外的使用权限可以从 creativecommons.org/licenses/by… 处获得。