当然可以!以下是《【前端】—ES6 下篇(带你深入了解 ES6 语法)》的结构化学习笔记,适合用于学习总结、教学演示或文章发布。
【前端】ES6 下篇(带你深入了解 ES6 语法)
🚀 本篇是 ES6 系列的下篇,聚焦那些更深入、更实用的语法特性和开发技巧。涵盖模块化、异步处理、Symbol、Reflect、Proxy 等内容,助你从“会用”走向“精通”。
📚 目录
- 模块化语法(Module)
- Promise 异步处理机制
- async / await 的优雅异步写法
- Symbol:独一无二的标识符
- Set 和 Map:新的数据结构
- Proxy 与 Reflect:元编程的利器
- Class 类继承与静态属性
- ES6 内置对象方法扩展
- 迭代器(Iterator)与生成器(Generator)
- ES6 进阶开发建议与实战技巧
1️⃣ 模块化语法(Module)
// export.js
export const PI = 3.14;
export function add(a, b) {
return a + b;
}
// import.js
import { PI, add } from './export.js';
console.log(add(1, 2));
export
和import
是静态模块语法,编译阶段确定依赖关系。export default
可导出单个默认值。
2️⃣ Promise 异步处理机制
const p = new Promise((resolve, reject) => {
setTimeout(() => resolve('OK'), 1000);
});
p.then(res => console.log(res));
- 三种状态:
pending
、fulfilled
、rejected
- 支持链式调用
.then().catch().finally()
3️⃣ async / await 的优雅异步写法
async function getData() {
try {
const res = await fetch('https://api.example.com');
const data = await res.json();
console.log(data);
} catch (e) {
console.error(e);
}
}
async
返回一个 Promiseawait
可暂停执行直到 Promise 解决
4️⃣ Symbol:独一无二的标识符
const sym = Symbol('id');
const user = {
[sym]: 123
};
- 不可重复,适合作为对象属性键名
- 可防止属性被不小心覆盖
5️⃣ Set 和 Map:新的数据结构
const s = new Set([1, 2, 2, 3]); // Set 去重
const m = new Map();
m.set('a', 100).set('b', 200);
Set
:无重复的值集合Map
:键值对集合,键可为任意类型
6️⃣ Proxy 与 Reflect:元编程
const obj = { name: 'Tom' };
const proxy = new Proxy(obj, {
get(target, prop) {
return prop in target ? target[prop] : 'N/A';
}
});
console.log(proxy.age); // 输出 N/A
Proxy
用于拦截对象操作(如 get、set)Reflect
是对原始对象操作的标准 API
7️⃣ Class 类继承与静态属性
class Animal {
static type = 'mammal';
constructor(name) {
this.name = name;
}
}
class Dog extends Animal {
bark() {
return 'Woof!';
}
}
extends
用于继承父类super()
调用父类构造器static
定义静态属性和方法
8️⃣ ES6 内置对象方法扩展
对象 | 新增方法 |
---|---|
Array | find() 、includes() 、from() 、fill() |
Object | Object.assign() 、Object.values() 、Object.entries() |
String | startsWith() 、endsWith() 、repeat() 、padStart() |
9️⃣ 迭代器与生成器
迭代器(Iterator)
const arr = [10, 20, 30];
const it = arr[Symbol.iterator]();
console.log(it.next()); // { value: 10, done: false }
生成器(Generator)
function* gen() {
yield 1;
yield 2;
return 3;
}
for (const val of gen()) {
console.log(val); // 输出 1、2
}
🔟 ES6 进阶建议与实战技巧
- ✅ 使用
let/const
替代var
- ✅ 优先使用模块导入,而非全局变量
- ✅ 在异步逻辑中使用
async/await
替代.then()
- ✅ 用
Set
处理数组去重 - ✅ 结合
Proxy
+Reflect
实现响应式对象(如 Vue3 的原理)
📘 推荐阅读与资料
✅ 总结一句话
“ES6 的强大,不止是语法糖,更是现代前端工程的基石。”
发表回复