当前位置:首页 > 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实现换肤

使用CSS变量实现换肤 通过CSS变量可以轻松实现主题切换功能。CSS变量在根元素中定义,通过JavaScript动态修改这些变量值。 :root { --primary-color: #349…

js实现图表

js实现图表

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

js实现百叶窗

js实现百叶窗

使用CSS和JavaScript实现百叶窗效果 通过CSS动画和JavaScript事件监听可以实现百叶窗效果。核心思路是将内容区域分割为多个条状元素,通过控制它们的展开/折叠状态来模拟百叶窗。…

js实现变形

js实现变形

使用 CSS 和 JavaScript 实现元素变形 在 JavaScript 中实现变形效果通常结合 CSS 的 transform 属性,通过动态修改该属性实现元素的旋转、缩放、倾斜或平移。 基…

js实现dh

js实现dh

JavaScript 实现 DH(Diffie-Hellman)密钥交换 Diffie-Hellman(DH)密钥交换是一种安全协议,允许双方在不安全的通信信道上建立一个共享密钥。以下是如何在 Jav…

js类实现

js类实现

使用类实现 JavaScript 功能 在 JavaScript 中,类(Class)是一种语法糖,基于原型继承机制。通过 class 关键字可以更直观地定义对象模板。 基本类定义 class…