#JavaScript

共 28 篇

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

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

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

22 min·7694 字 阅读全文 →
深入浅出前端路由体系:从 URL 到渲染的完整链路 深度 No.050 09-16

深入浅出前端路由体系:从 URL 到渲染的完整链路

前端路由要把内存里的 UI 状态和地址栏的 URL 始终对齐,从 hash 到 History 再到导航标准化,匹配打分、导航守卫、懒加载与部署 fallback 才是真正吃功夫的地方。

38 min·13221 字 阅读全文 →
【每日一面】类型系统与类型转换 每日一面 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 字 阅读全文 →
深度 No.043 09-09

深入浅出微前端架构

当单体前端的构建、发布与协作都撞上规模天花板,微前端把业务拆成可独立交付的子应用再运行时组合——本文从原理讲到四大主流方案对比,再落到 qiankun 落地与工程实践里的那些坑。

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

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

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

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

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

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

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

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

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

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

【每日一面】webpack plugin 原理

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

20 min·6838 字 阅读全文 →
深度解析 JavaScript 作用域与作用域链 前端基础 No.029 11-17

深度解析 JavaScript 作用域与作用域链

作用域分全局、函数、块级,变量查找顺着 `[[Scopes]]` 一路向上,理解词法作用域才能吃透闭包。

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

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

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

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

【每日一面】webpack loader 原理

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

15 min·5325 字 阅读全文 →
JavaScript 原型/原型链 前端基础 No.026 11-14

JavaScript 原型/原型链

`[[Prototype]]`、`__proto__` 与 `prototype` 各司其职,属性沿原型链一路查到 null,而 class 只是它的语法糖。

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

【每日一面】装饰器原理

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

15 min·5362 字 阅读全文 →
深入浅出 SPA/MPA 前端基础 No.023 11-07

深入浅出 SPA/MPA

SPA 交互快但 SEO 弱,MPA 首屏快且 SEO 好,选型就是在交互与收录之间做权衡。

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

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

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

16 min·5438 字 阅读全文 →
深入浅出 ES Module 前端基础 No.021 10-31

深入浅出 ES Module

ESM 是语言级的模块方案:静态、独立作用域、按引用传递、异步加载,和 CJS / AMD / UMD 都不太一样。

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

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

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

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

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

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

12 min·4044 字 阅读全文 →
浅浅的聊一下 WebSocket 前端基础 No.012 10-09

浅浅的聊一下 WebSocket

WebSocket 借一次 HTTP Upgrade 握手升级成全双工长连接,头部开销小,正好适合实时双向通信。

9 min·3288 字 阅读全文 →
想学canvas?那一定要看看这篇文章 前端基础 No.011 10-09

想学canvas?那一定要看看这篇文章

Canvas 从坐标系画到贝塞尔曲线,再跑起物理动画和碰撞检测,但真正撑起动效的,永远是算法与数据结构。

23 min·8095 字 阅读全文 →
【每日一面】获取文字的真实宽度 每日一面 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 字 阅读全文 →
《你不知道的JavaScript》笔记(一) 读书笔记 No.006 10-09

《你不知道的JavaScript》笔记(一)

作用域由书写位置决定,嵌套与遮蔽由此而来,而 `eval` / `with` 会破坏编译优化——这是理解 JS 的起点。

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

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

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

9 min·3056 字 阅读全文 →
JavaScript 沙箱 前端基础 No.002 10-09

JavaScript 沙箱

沙箱像一座楚门世界,用 IFrame、Proxy 或快照把代码关进隔离区——但它不等于绝对安全。

17 min·5916 字 阅读全文 →