当然可以!以下是《【前端】—ES6 下篇(带你深入了解 ES6 语法)》的结构化学习笔记,适合用于学习总结、教学演示或文章发布。


【前端】ES6 下篇(带你深入了解 ES6 语法)

🚀 本篇是 ES6 系列的下篇,聚焦那些更深入、更实用的语法特性和开发技巧。涵盖模块化、异步处理、Symbol、Reflect、Proxy 等内容,助你从“会用”走向“精通”。


📚 目录

  1. 模块化语法(Module)
  2. Promise 异步处理机制
  3. async / await 的优雅异步写法
  4. Symbol:独一无二的标识符
  5. Set 和 Map:新的数据结构
  6. Proxy 与 Reflect:元编程的利器
  7. Class 类继承与静态属性
  8. ES6 内置对象方法扩展
  9. 迭代器(Iterator)与生成器(Generator)
  10. 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));
  • 三种状态:pendingfulfilledrejected
  • 支持链式调用 .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 返回一个 Promise
  • await 可暂停执行直到 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 内置对象方法扩展

对象新增方法
Arrayfind()includes()from()fill()
ObjectObject.assign()Object.values()Object.entries()
StringstartsWith()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 的强大,不止是语法糖,更是现代前端工程的基石。”