当前位置:首页 > JavaScript

js实现封装

2026-04-04 00:48:44JavaScript

封装的概念

封装是面向对象编程的核心概念之一,指将数据(属性)和操作数据的方法(行为)捆绑在一起,并隐藏内部实现细节,仅暴露必要的接口。在JavaScript中,封装可以通过多种方式实现。

使用构造函数和原型

通过构造函数定义对象的属性和方法,利用原型链共享方法,避免每次实例化都重新创建方法。

js实现封装

function Person(name, age) {
    // 私有变量(通过闭包实现)
    let _id = Math.random();

    // 公开属性
    this.name = name;
    this.age = age;

    // 特权方法(可访问私有变量)
    this.getId = function() {
        return _id;
    };
}

// 共享方法
Person.prototype.greet = function() {
    return `Hello, I'm ${this.name}`;
};

使用ES6 Class语法

ES6的class语法糖提供了更清晰的封装方式,结合#前缀可定义私有字段(ES2022+)。

js实现封装

class Person {
    // 私有字段
    #id;

    constructor(name, age) {
        this.#id = Math.random();
        this.name = name;
        this.age = age;
    }

    // 公共方法
    greet() {
        return `Hello, my ID is ${this.#getId()}`;
    }

    // 私有方法
    #getId() {
        return this.#id;
    }
}

使用闭包实现私有性

通过IIFE(立即执行函数)创建闭包环境,隐藏私有成员。

const counter = (function() {
    let _count = 0;

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

使用模块模式

利用ES6模块的exportimport实现文件级封装,每个模块有自己的作用域。

// person.js
let _idCounter = 0;

export class Person {
    constructor(name) {
        this.id = ++_idCounter;
        this.name = name;
    }
}

注意事项

  • 现代JavaScript推荐使用class语法结合#私有字段
  • 旧版环境可通过闭包模拟私有性
  • 模块化封装适合大型项目组织代码
  • 避免过度封装导致代码复杂度增加

标签: js
分享给朋友:

相关文章

js 实现分页

js 实现分页

实现分页的基本逻辑 分页功能通常需要后端返回数据总量或总页数,前端根据当前页码和每页条数截取对应数据。以下是一个基于JavaScript的简单分页实现方案: 前端分页实现 假设已有从后端获取的完整数…

js实现论坛

js实现论坛

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

js实现图

js实现图

JavaScript 实现图的常用方法 在 JavaScript 中,图(Graph)可以通过多种方式实现,常见的包括邻接表(Adjacency List)和邻接矩阵(Adjacency Matrix…

js实现正交

js实现正交

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

js计算器的实现

js计算器的实现

实现基础结构 HTML部分需要创建计算器的基本框架,包含显示区域和按钮。使用<div>容器包裹整个计算器,内部设置一个显示屏和多个按钮。 <div class="calculato…

js实现定位

js实现定位

使用Geolocation API获取当前位置 在JavaScript中,可以通过浏览器内置的Geolocation API获取用户的地理位置信息。该API需要用户授权才能访问位置数据。 if (n…