闭包(Closure)

闭包是指函数能够访问并记住其词法作用域,即使该函数在其作用域外执行。
🔍 核心特性

  • 保留外部函数的变量
  • 实现数据封装与私有变量
  • 避免内存泄漏(合理使用)
闭包示意图

示例代码

function outer() {
  let count = 0;
  return () => {
    count++;
    console.log(count);
  };
}
const inner = outer();
inner(); // 1
inner(); // 2

原型链(Prototype Chain)

JavaScript 的对象继承机制基于原型链,通过 __proto__ 连接。
🔗 关键概念

  • 原型对象(Prototype Object)
  • 构造函数(Constructor Function)
  • Object.create() 方法
原型链结构图

继承实现

function Animal(name) {
  this.name = name;
}
Animal.prototype.speak = function() {
  console.log(`${this.name} makes a noise.`);
};

function Dog(name) {
  Animal.call(this, name);
}
Dog.prototype = Object.create(Animal.prototype);
Dog.prototype.constructor = Dog;

模块模式(Module Pattern)

通过闭包创建私有变量和函数,实现模块化开发。
📦 应用场景

  • 单例模式设计
  • 避免全局污染
  • 管理复杂状态

经典结构

const Module = (function() {
  let privateVar = 'secret';
  function privateMethod() {
    console.log('Private method called');
  }
  return {
    publicMethod: function() {
      privateMethod();
    },
    publicVar: 'public'
  };
})();

异步编程(Asynchronous Programming)

使用 async/awaitPromise 和事件循环处理非阻塞操作。
最佳实践

  • 避免回调地狱(Callback Hell)
  • 使用 Promise.all() 并行处理任务
  • 理解事件循环机制

异步示例

async function fetchData() {
  try {
    const response = await fetch('/api/data');
    const data = await response.json();
    console.log(data);
  } catch (error) {
    console.error('Error fetching data:', error);
  }
}

ES6+ 高级特性

探索 ProxySymbolWeakMap 等特性提升代码灵活性。
🛠 推荐用法

  • Proxy 实现数据拦截
  • Symbol 作为唯一键值
  • WeakMap 管理内存敏感对象

扩展阅读

ES6特性图

图片关键词:闭包示意图, 原型链结构图, ES6特性图