当前位置:首页 > 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实现倒计时

js实现倒计时

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

js实现计算器

js实现计算器

实现基础计算器功能 使用JavaScript创建一个基础计算器需要处理数字输入、运算符逻辑和结果显示。以下是一个简单的实现示例: let currentInput = '0'; let previ…

js实现复制功能

js实现复制功能

使用 document.execCommand 方法 这种方法适用于较旧的浏览器,但在现代浏览器中可能被逐步淘汰。通过创建一个临时的 textarea 元素,将文本内容放入其中,然后执行复制命令。…

js实现图片放大缩小

js实现图片放大缩小

实现图片放大缩小的基础方法 使用CSS的transform: scale()属性可以快速实现图片的放大缩小效果。通过JavaScript动态修改该属性值: const img = document.…

js 实现vue

js 实现vue

Vue.js 的基本实现 在 JavaScript 中实现 Vue.js 的核心功能,可以通过数据绑定、响应式系统和虚拟 DOM 来实现。以下是实现 Vue.js 核心功能的简化版本。 数据响应式系…

js实现类

js实现类

JavaScript 实现类的几种方式 JavaScript 是一种基于原型的语言,但在 ES6 之后引入了 class 语法糖,使得实现类更加直观。以下是几种常见的实现方式: 使用构造函数 传统…