系列集合:
掘金小册系列。。。
5.图解原型和原型链
6.你必须懂的js
12.接口的防刷办法
13.HTTP/1.0、HTTP/1.1、HTTP/2、HTTPS
14.你真的了解回流和重绘吗
15.浏览器与Node的事件循环(Event Loop)有何区别?
16.一文读懂前端缓存
17.深入理解浏览器的缓存机制
18.前端埋点的那些事
20.0202年了, Chrome DevTools 你还只会console.log吗 ?
22.基于 Token 的身份验证:JSON Web Token(附:Node.js 项目)
24.Vuex、Flux、Redux、Redux-saga、Dva、MobX
29.深入理解浏览器的缓存机制
30.前端模块化详解(完整版)
33.JS Proxy(代理)
37.手写并发请求
38.浅拷贝与深拷贝
40.js处理时间(时间戳转化成日期格式、几分钟前,几个小时前等、视频时长)
41.你还没搞懂this?
46.几种常见的CSS布局
49.微信面试官不讲武德,一上来就问我Chrome原理和HTTP协议
51.Ajax原理一篇就够
52.懒加载和预加载
53.函数节流和防抖
56.每周前端七题详解系列
57.再来40道this面试题酸爽继续(1.2w字用手整理)
64.数组去重12方法
65.45道Promise面试题(限制异步操作的并发个数并尽可能快的完成全部)
67.字节跳动最爱考的前端面试题:JavaScript 基础
74.React常见面试题
79.手写React核心原理,再也不怕面试官问我react原理
87.JavaScript面试之手写call、apply、bind
90.手写new
function myNew(){
const obj = new Object();
Constructor = Array.prototype.shift.call([...arguments]);
obj.__proto__ = Constructor.prototype;
let ret = Constructor.apply(obj,[...arguments]); // 判断构造函数是否存在返回值
return typeof ret === 'object'? ret : obj;
}
创建一个新的对象,并返回。符合new函数的功能。
截取传入myNew函数的第一个参数。
将第一个参数的prototype与要返回的对象建立关联。
使用apply,改变构造函数的this指向,使其指向新对象,这样,obj就可以访问到构造函数中的属性了。
返回obj。如果构造函数有返回值,则返回该对象
91.Array.prototype.push.apply(a,b)和Array.prototype.slice.call(arguments)
原生push方法接受的参数是一个参数列表,它不会自动把数组扩展成参数列表,使用apply的写法可以将数组型参数扩展成参数列表,这样合并两个数组就可以直接传数组参数了。但是合并数组为什么不直接使用Array.prototype.concat()呢?因为concat不会改变原数组,concat会返回新数组,而上面apply这种写法直接改变数组a。
92.柯里化与反柯里化
94.MVC、MVP、MVVM
99.每天一道面试题
101.图解 Flux
102.Flux 架构入门教程
103.最简化 VUE的响应式原理
106.彻底理解浏览器的缓存机制
107.如何优雅处理前端异常?
109.「源码解析」一文吃透react-redux源码(useMemo经典源码级案例)
110.认识 V8 引擎
111.V8引擎详解(一)——概述
112.闲聊js中的apply、call和arguments
113.深入浅出谈Cookie
115.Git 工作流程
116.浏览器同域名请求的最大并发数限制
120.【React深入】深入分析虚拟DOM的渲染原理和特性
121.前端性能优化
122.前端性能优化总结
123.详解二分查找算法
125.前端面试查漏补缺--(七) XSS攻击与CSRF攻击
127.进入大厂的面试经验(P7)
128.腾讯前端面经+鸡汤
130.Web 安全漏洞之 XSS 攻击
131.这一次,彻底理解XSS攻击
132.TCP和UDP比较