当前位置:首页 > JavaScript

js实现多态

2026-03-14 22:57:13JavaScript

实现多态的核心概念

多态是面向对象编程的三大特性之一,指同一操作作用于不同对象时产生不同的行为。JavaScript通过原型链和对象动态特性实现多态。

js实现多态

基于原型链的多态实现

通过原型继承实现方法重写:

js实现多态

function Animal() {
  this.speak = function() {
    console.log('Animal sound');
  };
}

function Dog() {}
Dog.prototype = new Animal();
Dog.prototype.speak = function() {
  console.log('Bark!');
};

const animal = new Animal();
const dog = new Dog();
animal.speak(); // 输出: Animal sound
dog.speak();    // 输出: Bark!

基于class语法的多态实现

ES6的class语法糖更清晰地实现多态:

class Animal {
  speak() {
    console.log('Animal sound');
  }
}

class Dog extends Animal {
  speak() {
    console.log('Bark!');
  }
}

const animals = [new Animal(), new Dog()];
animals.forEach(animal => animal.speak());
// 输出:
// Animal sound
// Bark!

鸭子类型实现多态

JavaScript的动态类型特性允许不依赖继承的多态:

function makeSound(animal) {
  if (animal && typeof animal.speak === 'function') {
    animal.speak();
  }
}

const cat = {
  speak: () => console.log('Meow')
};

const duck = {
  speak: () => console.log('Quack')
};

makeSound(cat);  // 输出: Meow
makeSound(duck); // 输出: Quack

多态的应用场景

  1. 统一接口不同实现:不同子类对同一方法的不同实现
  2. 插件系统:通过约定接口实现扩展
  3. 策略模式:运行时选择不同算法

注意事项

  1. 避免过度使用多态导致代码复杂度增加
  2. 清晰的文档说明接口约定
  3. 类型检查可配合TypeScript增强可靠性

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

相关文章

js 实现vue

js 实现vue

实现 Vue 的核心功能 在 JavaScript 中实现 Vue 的核心功能需要模拟数据绑定、虚拟 DOM 和响应式系统。以下是一个简化版的实现思路: 响应式系统 通过 Object.define…

js实现求导

js实现求导

实现数值求导的方法 在JavaScript中实现求导通常采用数值方法,因为JavaScript不是符号计算语言。以下是常见的数值微分方法: 中心差分法 中心差分法提供较高精度的导数近似:…

js验证码的实现

js验证码的实现

验证码的基本实现原理 验证码(CAPTCHA)的核心目标是区分人类用户和自动化程序。JavaScript可用于生成或验证客户端验证码,但需注意纯前端验证可能被绕过,通常需结合后端验证。 纯前端验证码…

js实现 拖动

js实现 拖动

实现拖动的步骤 HTML 结构 创建一个可拖动的元素和一个放置区域: <div id="draggable" draggable="true">拖动我</div> <d…

php多态实现

php多态实现

PHP 多态的实现方法 多态是面向对象编程的三大特性之一,允许不同类的对象对同一消息做出响应。PHP 主要通过以下方式实现多态: 通过继承和方法重写 子类继承父类并重写父类方法,实现不同子类对同一方…

js 实现全选

js 实现全选

实现全选功能的方法 使用 JavaScript 实现全选功能通常需要操作复选框(checkbox)的状态。以下是几种常见的实现方式。 通过 DOM 操作实现全选 // 获取全选复选框和子复选…