当前位置:首页 > JavaScript

js 实现封装

2026-03-02 04:10:32JavaScript

封装的概念

封装是面向对象编程的三大特性之一,主要目的是隐藏对象的内部细节,仅对外暴露必要的接口。通过封装可以提高代码的可维护性和安全性。

实现封装的方式

使用闭包 通过函数作用域实现私有变量,只暴露需要公开的方法:

function createCounter() {
  let count = 0; // 私有变量

  return {
    increment() {
      count++;
    },
    getCount() {
      return count;
    }
  };
}

const counter = createCounter();
counter.increment();
console.log(counter.getCount()); // 1
console.log(counter.count); // undefined

ES6 Class 语法 通过类定义中的 # 前缀声明私有字段:

class Counter {
  #count = 0; // 私有字段

  increment() {
    this.#count++;
  }

  getCount() {
    return this.#count;
  }
}

const counter = new Counter();
counter.increment();
console.log(counter.getCount()); // 1
console.log(counter.#count); // 报错

模块模式 利用 IIFE 立即执行函数创建私有作用域:

js 实现封装

const module = (function() {
  let privateVar = 'secret';

  function privateMethod() {
    return privateVar;
  }

  return {
    publicMethod() {
      return privateMethod();
    }
  };
})();

console.log(module.publicMethod()); // "secret"
console.log(module.privateVar); // undefined

封装的优势

  • 数据保护:防止外部直接修改内部状态
  • 接口稳定:内部实现变更不影响外部调用
  • 降低耦合:模块间通过清晰接口通信

注意事项

  • TypeScript 提供更完善的 private 修饰符
  • 浏览器环境可能需要 Babel 转译私有字段语法
  • 过度封装可能导致代码复杂度增加

标签: js
分享给朋友:

相关文章

js实现倒计时

js实现倒计时

使用 setInterval 实现倒计时 通过 setInterval 定时器每秒更新剩余时间,适用于简单倒计时场景。 function countdown(seconds, callback) {…

js实现论坛

js实现论坛

实现论坛的基本功能 使用JavaScript实现一个论坛需要结合前端和后端技术。前端可以使用React、Vue或Angular等框架,后端可以选择Node.js配合Express或Koa框架。数据库可…

js实现图表

js实现图表

在JavaScript中实现图表通常使用流行的图表库,以下是几种常见的方法和工具: 使用Chart.js Chart.js是一个简单灵活的库,适合快速生成响应式图表。安装方式包括CDN引入或npm安…

js实现预览

js实现预览

文件上传预览实现 使用JavaScript实现文件上传预览功能,可以通过FileReader对象读取文件内容并显示预览。以下代码支持图片、文本和PDF文件的预览: // HTML部分需要包含…

js实现密码

js实现密码

密码强度验证 使用正则表达式验证密码强度是一种常见方法。以下代码检查密码是否包含大小写字母、数字和特殊字符,且长度至少为8位: function checkPasswordStrength(pass…

js实现正交

js实现正交

正交的概念 正交在数学和计算机科学中通常指两个向量垂直或线性无关。在编程中,正交性常被用于设计模块化、低耦合的系统。 向量正交判断 判断两个向量是否正交可以通过点积是否为0来实现: fun…