js实现封装
封装的概念
封装是面向对象编程的核心概念之一,旨在隐藏对象的内部细节,仅暴露必要的接口供外部调用。通过封装,可以提高代码的可维护性和安全性。

实现封装的方法
使用闭包
闭包是JavaScript中实现封装的有效方式,通过函数作用域隔离内部变量,避免全局污染。

function createCounter() {
let count = 0;
return {
increment: function() {
count++;
},
getCount: function() {
return count;
}
};
}
const counter = createCounter();
counter.increment();
console.log(counter.getCount()); // 输出1
使用ES6的Class语法
ES6的Class语法提供了更直观的封装方式,通过private字段(ES2022)或约定(如_前缀)实现私有成员。
class Counter {
#count = 0; // 私有字段
increment() {
this.#count++;
}
getCount() {
return this.#count;
}
}
const counter = new Counter();
counter.increment();
console.log(counter.getCount()); // 输出1
使用模块化
通过ES6模块导出和导入功能,可以实现文件级别的封装,隐藏内部实现细节。
// counter.js
let count = 0;
export function increment() {
count++;
}
export function getCount() {
return count;
}
// main.js
import { increment, getCount } from './counter.js';
increment();
console.log(getCount()); // 输出1
封装的优势
- 数据保护:避免外部直接修改内部状态。
- 接口清晰:明确暴露可调用的方法,降低使用复杂度。
- 易于维护:内部逻辑修改不影响外部调用。
注意事项
- 避免过度封装,合理权衡灵活性与安全性。
- 在ES6之前,可通过IIFE(立即执行函数)模拟模块化封装。






