每日一面

共 24 篇

【每日一面】事件模型与事件委托 每日一面 No.051 09-16

【每日一面】事件模型与事件委托

事件在 DOM 树里先捕获后冒泡,事件委托借着冒泡把 N 个监听器收成一个,顺带让动态节点自动生效。

22 min·7694 字 阅读全文 →
【每日一面】类型系统与类型转换 每日一面 No.048 09-15

【每日一面】类型系统与类型转换

JavaScript 的类型转换全都落在 ToPrimitive、ToString、ToNumber、ToBoolean 四个抽象操作上,把加号与宽松相等(==)的规则串起来,[] == ![]、{} + [] 这类题就不再是靠背的。

19 min·6824 字 阅读全文 →
【每日一面】内存泄漏与垃圾回收 每日一面 No.047 09-15

【每日一面】内存泄漏与垃圾回收

内存泄漏的本质是对象从根仍然可达、GC 回收不掉,所以要掌握的是标记-清除与代际回收的判定逻辑,以及全局变量、定时器、闭包、DOM 引用、事件监听、第三方库这六类高频泄漏场景的定位路径。

18 min·6412 字 阅读全文 →
【每日一面】深浅拷贝 每日一面 No.045 09-11

【每日一面】深浅拷贝

浅拷贝只复制第一层、嵌套引用依旧共享,深拷贝则要递归到每一层,还得用 WeakMap 兜住循环引用、用类型分支兜住 Date / RegExp / Map / Set。

19 min·6615 字 阅读全文 →
【每日一面】this 指向与绑定规则 每日一面 No.044 09-10

【每日一面】this 指向与绑定规则

this 在函数被调用的那一刻才定下来,看调用方式就行:new > 显式 bind > 对象方法 > 默认绑定,而箭头函数不绑定 this,只一路向上继承词法作用域的 this。

21 min·7496 字 阅读全文 →
【每日一面】深入理解 JavaScript 原型链 每日一面 No.042 09-09

【每日一面】深入理解 JavaScript 原型链

原型链是靠 __proto__ 把实例、原型与构造函数串起来的一条查找链:属性沿它一路查到 null,把 prototype 与 constructor 的关系理顺,class extends 的本质也就通了。

20 min·6862 字 阅读全文 →
【每日一面】深入理解闭包 每日一面 No.041 09-08

【每日一面】深入理解闭包

闭包是作用域链查找与垃圾回收共同作用的结果:内部函数让外部变量持续存活,用于数据私有、状态保持与防抖节流,但也要提防意外的内存泄漏。

16 min·5687 字 阅读全文 →
【每日一面】浏览器渲染机制:重绘与回流 每日一面 No.040 09-04

【每日一面】浏览器渲染机制:重绘与回流

回流必带重绘,批读写、用 transform / opacity 走 GPU、借 will-change 和 rAF,是压住重排的三板斧。

21 min·7243 字 阅读全文 →
【每日一面】事件循环机制 每日一面 No.039 09-04

【每日一面】事件循环机制

JS 单线程靠调用栈加任务队列运转,微任务永远先于宏任务清空,异步顺序全看这一条。

13 min·4720 字 阅读全文 →
【每日一面】HTTP 和 HTTPS 的区别 每日一面 No.031 11-26

【每日一面】HTTP 和 HTTPS 的区别

HTTPS 就是 HTTP 套上 SSL/TLS,用对称 + 非对称加密和证书体系,保住传输的机密与身份。

9 min·3094 字 阅读全文 →
【每日一面】webpack plugin 原理 每日一面 No.030 11-24

【每日一面】webpack plugin 原理

plugin 是一个带 `apply` 的类,靠 Compiler / Compilation 的钩子介入构建的全生命周期。

20 min·6838 字 阅读全文 →
【每日一面】如何解决内存泄漏 每日一面 No.028 11-17

【每日一面】如何解决内存泄漏

内存泄漏靠 DevTools 定位、靠切断引用来治理,常见元凶是全局变量、闭包、DOM 引用和第三方库。

11 min·3799 字 阅读全文 →
【每日一面】webpack loader 原理 每日一面 No.027 11-17

【每日一面】webpack loader 原理

loader 是资源的翻译器,把非 JS 资源串成管道、从右到左编译成模块。

15 min·5325 字 阅读全文 →
【每日一面】BOM 是什么 每日一面 No.025 11-13

【每日一面】BOM 是什么

BOM 管的是 window、location、history、screen 这些浏览器窗口能力,和管文档结构的 DOM 是两回事。

9 min·3146 字 阅读全文 →
【每日一面】装饰器原理 每日一面 No.024 11-12

【每日一面】装饰器原理

装饰器是类定义时执行的元编程语法糖,给类、方法、属性、访问器加能力,比高阶函数更声明式。

15 min·5362 字 阅读全文 →
【每日一面】实现一个深拷贝函数 每日一面 No.022 11-04

【每日一面】实现一个深拷贝函数

JSON 方案扛不住函数与循环引用,健壮的深拷贝要递归遍历,并用 WeakMap 兜住环、用特判兜住 Date / RegExp / Map / Set。

16 min·5438 字 阅读全文 →
【每日一面】你怎么理解 Proxy 的 每日一面 No.020 10-30

【每日一面】你怎么理解 Proxy 的

Proxy 用 get / set / has 等拦截做出非侵入式代理,也正是 Vue3 响应式的基石。

12 min·4333 字 阅读全文 →
【每日一面】对 Promise.race 的理解 每日一面 No.019 10-29

【每日一面】对 Promise.race 的理解

Promise.race 谁先 settle 就返回谁,正好用来做超时控制与请求重试。

11 min·3954 字 阅读全文 →
【每日一面】async/await 的原理 每日一面 No.018 10-29

【每日一面】async/await 的原理

async/await 不过是 Generator 加自动执行器再套一层 Promise 的语法糖,yield 对应 await、next 对应自动推进。

12 min·4044 字 阅读全文 →
【每日一面】手写防抖函数 每日一面 No.017 10-27

【每日一面】手写防抖函数

防抖等你不动了再执行、节流按固定节奏执行,搜索输入这类高频触发场景全靠它。

6 min·1946 字 阅读全文 →
【每日一面】盒子模型 每日一面 No.016 10-10

【每日一面】盒子模型

标准盒模型是内容 + 内边距 + 边框 + 外边距,而 BFC 能管住外边距合并、清浮动和两栏布局。

4 min·1513 字 阅读全文 →
【每日一面】获取文字的真实宽度 每日一面 No.008 10-09

【每日一面】获取文字的真实宽度

量文字宽度要么借隐藏 DOM 的 measureText,要么上 canvas 的 measureText,但都得防字体不一致和 emoji 这些坑。

8 min·2708 字 阅读全文 →
【每日一面】任意 dom 元素吸顶 每日一面 No.007 10-09

【每日一面】任意 dom 元素吸顶

吸顶首选 `position: sticky`,但它受容器块、top 值和祖先 overflow 束缚,卡住时用 JS 滚动监听兜底。

13 min·4449 字 阅读全文 →
【每日一面】React Hooks 闭包陷阱 每日一面 No.004 10-09

【每日一面】React Hooks 闭包陷阱

Hooks 里的闭包陷阱来自渲染快照与依赖缺失,靠 useRef、补依赖或把状态对象化就能绕开。

9 min·3056 字 阅读全文 →