当前位置:首页 > JavaScript

js 实现封装 多态

2026-02-02 20:56:44JavaScript

封装与多态在 JavaScript 中的实现

封装

封装的核心在于隐藏内部细节,仅暴露必要接口。JavaScript 通过闭包、模块模式或 ES6 的 class 语法实现。

闭包实现私有变量

js 实现封装 多态

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

  this.increment = function() {
    count++;
    console.log(count);
  };

  this.getCount = function() {
    return count;
  };
}

const counter = new Counter();
counter.increment(); // 输出 1
console.log(counter.count); // undefined(无法直接访问)

ES6 Class 实现

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

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

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

多态

多态允许不同对象对同一方法表现出不同行为,通常通过继承和接口实现(JavaScript 无接口,但可通过 duck typing 模拟)。

js 实现封装 多态

继承实现多态

class Animal {
  makeSound() {
    console.log("Some generic sound");
  }
}

class Dog extends Animal {
  makeSound() {
    console.log("Bark!");
  }
}

class Cat extends Animal {
  makeSound() {
    console.log("Meow!");
  }
}

const animals = [new Dog(), new Cat()];
animals.forEach(animal => animal.makeSound());
// 输出: Bark! / Meow!

Duck Typing 模拟多态

function playSound(entity) {
  if (typeof entity.makeSound === 'function') {
    entity.makeSound();
  }
}

const dog = { makeSound: () => console.log("Bark!") };
const robot = { beep: () => console.log("Beep!") };

playSound(dog); // 输出: Bark!
playSound(robot); // 无输出(不符合"鸭子类型")

关键注意事项

  • 封装:优先使用 ES6 的私有字段(#)或闭包保护数据,避免直接暴露属性。
  • 多态:通过方法重写或 duck typing 实现,注意检查对象是否实现所需方法。
  • 性能:闭包实现的私有变量会为每个实例创建方法副本,而 ES6 私有字段是共享的。

标签: 多态js
分享给朋友:

相关文章

js实现tab选项卡切换

js实现tab选项卡切换

实现Tab选项卡切换的JavaScript方法 使用纯JavaScript实现Tab切换功能,可以通过监听点击事件动态切换内容显示状态。以下是两种常见实现方式: 基础DOM操作实现 // 获取所有…

js实现授权

js实现授权

授权流程设计 授权流程通常涉及前端与后端的交互,常见方案包括OAuth2.0、JWT等。以JWT为例的典型流程: 用户提交凭证(如用户名密码)到认证服务 服务端验证通过后生成包含用户信息的JWT令牌…

js实现目录

js实现目录

实现目录的基本思路 在JavaScript中实现目录功能通常涉及以下几个核心步骤:解析文档中的标题元素(如h1-h6),动态生成目录结构,并添加交互逻辑(如点击跳转)。以下是具体实现方法: 解析标题…

js实现图片

js实现图片

图片加载与显示 在JavaScript中,可以通过Image对象动态加载图片。创建实例后设置src属性触发加载,通过onload回调处理加载完成后的操作: const img = new Ima…

js实现显示隐藏

js实现显示隐藏

显示隐藏的实现方法 在JavaScript中,实现元素的显示和隐藏可以通过多种方式完成。以下是几种常见的方法: 修改CSS的display属性 通过改变元素的display属性可以在none(隐藏)…

js实现的游戏

js实现的游戏

JavaScript 游戏开发基础 JavaScript 是开发网页游戏的流行选择,因其无需插件即可在浏览器中运行。以下是一些关键技术和资源: HTML5 Canvas Canvas 提供了绘制图形…