🌈 一、从奶茶铺开始学 JS
在这家「JavaScript 奶茶铺」里,每一个语法特性都有它的"岗位"。
模块 | 奶茶铺角色 | JS 对应概念 |
---|---|---|
厨房柜子 | var / let / const | 变量声明作用域 |
点单系统 | Promise / async | 异步机制 |
库存表 | Set / Map | 数据结构 |
前台小姐姐 | Proxy / Reflect | 拦截与验证 |
总店后台 | Module / Export | 模块化管理 |
自动奶茶机 | Generator | 可暂停函数 |
🧋二、三种柜子:var、let、const
关键字 | 作用范围 | 特点 | 比喻 |
---|---|---|---|
var |
函数作用域 | 会"提前声明" | 老式开放柜子(谁都能乱翻) |
let |
块级作用域 | 不会提前声明,不能重复声明 | 独立储物格(进门前要钥匙) |
const |
块级作用域 | 声明后不能改 | 锁死的储物柜(封印配方) |
📦 口诀:
"var 老好人,啥都能干;let 小心翼翼,只在小格;const 店长专用,动不得。"
🍹三、数组进化:从倒料机到自动奶茶机
方法 | 功能 | 奶茶铺记忆法 |
---|---|---|
... |
拆/合数组 | 倒料机 |
find() |
查找元素 | 找出第一杯加错糖的 |
fill() |
批量填充 | 一次倒满所有空杯 |
includes() |
判断存在 | 看菜单里有没有"乌龙奶" |
flat() |
拍平嵌套数组 | 压扁奶茶堆成托盘 |
flatMap() |
拍平 + 映射 | 自动加料奶茶机 |
🧃 口诀:
"spread 拆杯,fill 补料,find 巡查,flat 压奶茶。"
☕ 四、函数篇:自动化奶茶机
特性 | 功能 | 比喻 |
---|---|---|
默认参数 | 给默认口味 | 顾客不点则原味 |
剩余参数 ...rest |
收多余参数 | 打包多杯订单 |
箭头函数 | 简洁写法 | 自动封口机,不用 this |
严格模式 | 强制规范 | 上 ISO 管理体系 |
💡 口诀:
"箭头函数一键造,严格模式防乱搞。"
🧃五、对象升级:智能奶茶铺后台系统
新特性 | 功能 | 奶茶铺记忆法 |
---|---|---|
属性简写 | {name} |
自动补全顾客名 |
方法简写 | serve(){} |
一键语音下单 |
[key] |
动态属性名 | 自动打标签 |
Object.assign |
合并对象 | 多店库存整合 |
Object.is |
更精准比较 | 智能检测机 |
Object.entries |
键值数组 | 菜单打印表 |
🧃 口诀:
"方括号起标签,assign 合并香,keys values 查库存。"
🍵六、Promise 与 async/await:前台点单系统
阶段 | 技术 | 比喻 |
---|---|---|
回调函数 | 手动接单 | 累 |
Promise | 链式流程 | 自动流水线 |
Generator + co | 半自动机 | 一步步执行 |
async/await | 全自动机 | 奶茶机自己泡茶 |
💡Promise 状态:
- pending:制作中 ⏳
- fulfilled:完成 ✅
- rejected:失败 ❌
📦 口诀:
"Promise 一家人,all 全成,race 竞速,any 有一就行。"
🌟 七、模块化:总部配方系统
语法 | 功能 | 比喻 |
---|---|---|
export |
导出模块 | 总部发配方卡 |
import |
导入模块 | 分店拿配方 |
default |
主打产品 | 招牌奶茶 |
as |
重命名 | 改菜单称呼 |
* as |
全量导入 | 整本菜单搬走 |
💡 口诀:
"export 出货,import 进货。"
🎬 八、Generator:暂停与继续的奶茶剧场
概念 | 功能 | 奶茶铺记忆法 |
---|---|---|
function* |
定义可暂停函数 | 奶茶分幕剧 |
yield |
暂停点 | 等下一幕 |
next() |
恢复执行 | 继续做茶 |
💡 口诀:
"yield 是暂停键,next 是播放键。"
🎀 九、Decorator:奶茶机加 Buff
装饰器 | 功能 | 比喻 |
---|---|---|
@log |
日志记录 | 点单摄像头 |
@timestamp |
添加时间 | 打印出厂日期 |
@required |
参数校验 | 表单必填验证 |
💡 口诀:
"@前缀加魔法,不改逻辑加特效。"
🍯 十、Set / Map:库存与档案
类型 | 功能 | 比喻 |
---|---|---|
Set | 唯一集合 | 原料库存表 |
Map | 键值集合 | 店铺档案盒 |
💡Set 运算:
- 并集:合菜单
- 交集:共售饮品
- 差集:限定款
💡 口诀:
"Set 去重不重复,Map 存档最靠谱。"
☕ 十一、WeakSet / WeakMap:短期关系登记簿
类型 | 特点 | 比喻 |
---|---|---|
WeakSet | 存对象,自动清理 | 临时借杯登记 |
WeakMap | 键对象,自动清理 | 客人租赁档案 |
💡 口诀:
"WeakSet 存对象,WeakMap 记短情。"
💼 十二、Proxy + Reflect:前台小姐姐与后台系统
功能 | 拦截行为 | 奶茶铺比喻 |
---|---|---|
Proxy | 拦截操作 | 前台小姐姐接客 |
Reflect | 原始执行 | 后台系统落实 |
get / set / delete | 读写删监控 | 修改菜单、查价格 |
✨ 高级场景:
- 表单验证
- API 权限控制
- 响应式系统(Vue3 核心!)
💡 口诀:
"Proxy 拦截嘴,Reflect 动手腿;一改全店都更新!"
🌸 结语:让 JS 变得香甜易懂
从 var
到 Proxy
,
从"柜子放料"到"自动奶茶机"