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

js实现跳转

使用 window.location 跳转 通过修改 window.location.href 或直接使用 window.location 实现页面跳转,适用于普通跳转或带参数的 URL。 // 方…

js实现验证码

js实现验证码

使用Canvas生成图形验证码 在HTML中创建一个Canvas元素用于绘制验证码。通过JavaScript随机生成数字或字母组合,并添加干扰线、噪点等干扰元素增强安全性。 <canvas i…

js轮播图实现原理

js轮播图实现原理

轮播图的基本原理 轮播图通过动态切换显示的内容(图片、文本等)实现视觉上的滑动效果。核心原理是利用CSS和JavaScript控制元素的显示与隐藏,或通过变换位置实现滑动动画。 实现方法一:…

js实现换肤

js实现换肤

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

js实现点击显示和隐藏

js实现点击显示和隐藏

实现点击显示和隐藏的JavaScript方法 使用classList.toggle切换类名 通过添加/移除CSS类控制元素的显示与隐藏,需提前在CSS中定义隐藏样式(如display: none)。…

js实现百叶窗

js实现百叶窗

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