当前位置: 首页 > news >正文

前端碎碎念笔记:JavaScript 对象的继承与多态

▌这玩意是啥?

继承就像遗传——小狗继承了动物的“会叫”“会睡觉”的技能; 多态就像个性,不同动物都会叫,但叫声各有千秋。 在 JavaScript 里,用 extends 关键字就能让一个类继承另一个类的属性和方法, 再用“重写”让它们各自发挥特长。

▌能干啥?

继承能减少重复代码,把通用逻辑放在父类里。 多态能让同一个方法名在不同类中有不同行为, 这样代码看起来更干净,也更灵活。

▌看个例子:

// 父类别:动物
class Animal {
constructor(name, age) {this.name = name;  // 动物名称this.age = age;    // 动物年龄}// 父类别的方法speak() {return`${this.name} 发出声音`;}// 共同行为sleep() {return`${this.name} 正在睡觉`;}
}// 子类别:狗(继承动物)
class Dog extends Animal {
constructor(name, age, breed) {super(name, age);   // 调用父类别构造函数this.breed = breed; // 狗狗品种(子类独有属性)}// 覆写父类别的 speak 方法(多型)speak() {return`${this.name} 汪汪叫`;}// 子类别独有方法fetch() {return`${this.name} 去捡球`;}
}// 子类别:猫(继承动物)
class Cat extends Animal {
constructor(name, age, color) {super(name, age);   // 调用父类别构造函数this.color = color; // 猫咪颜色(子类独有属性)}// 覆写父类别的 speak 方法(多型)speak() {return`${this.name} 喵喵叫`;}// 子类别独有方法climb() {return`${this.name} 爬树`;}
}// 实际使用范例
const dog = new Dog("小白", 3, "柴犬");
const cat = new Cat("小花", 2, "橘色");console.log(dog.speak()); // 输出:小白 汪汪叫
console.log(cat.speak()); // 输出:小花 喵喵叫
console.log(dog.sleep()); // 输出:小白 正在睡觉(继承自父类)
console.log(cat.sleep()); // 输出:小花 正在睡觉(继承自父类)
console.log(dog.fetch()); // 输出:小白 去捡球(子类独有)
console.log(cat.climb()); // 输出:小花 爬树(子类独有)const animals = [dog, cat];
animals.forEach(animal => {
console.log(animal.speak()); // 各自展现不同的叫声
});

▌咋用?

  1. 用 class 定义父类,放共同属性和方法。

  2. 用 extends 继承父类。

  3. 子类中用 super() 调用父类构造函数。

  4. 想改行为?直接重写父类的方法。

  5. 想调回父类逻辑?用 super.方法名()

▌记得一点

继承让代码像家谱一样有条理, 多态让每个类都有自己的声音—— 代码世界里,也有性格呀 🐶🐱

#JavaScript基础 #面向对象 #继承与多态 #前端笔记 #代码碎碎念

http://www.dtcms.com/a/482123.html

相关文章:

  • 【Xcode】Macos p12 证书过期时间查看
  • 【AI视频】从单模型,到AI Agent工作流
  • C#知识学习-017(修饰符_6)
  • 视频营销网站网站前端设计与制作ppt
  • 基于单片机直流电机PWM调速闭环控制系统Proteus仿真(含全部资料)
  • WHAT - 前端性能指标(加载性能指标)
  • 网站外包要注意什么wordpress 布局编辑器
  • 人工智能课程:课程目录介绍 总纲
  • 1、机器学习与深度学习
  • 深入解析 kube-proxy:Kubernetes 服务发现的网络基石
  • Bestseller验厂核心解读
  • 1. cuda配置代码提示
  • Docker 构建教程:学习上下文、架构和性能优化技术
  • mysql数据库高级特性(一)
  • 做网站读什么专业个人网站备案内容不合格
  • 如何实现一个线程安全的容器:从同步机制到异常安全的设计实践
  • 网站建设与运营课程建筑行业官网
  • 基于开源AI智能名片链动2+1模式S2B2C商城小程序的互联网运营体系化研究
  • 线上教学小程序:构建高效互动的云端学习空间
  • JAVA校园跑腿校园外卖源码校园外卖小程序校园代买帮忙外卖源码社区外卖源码小程序+公众号+h5
  • 神经网络之链式法则的推导
  • 打印室预约系统|基于java和小程序的打印室预约系统设计与实现(源码+数据库+文档)
  • 东莞市网站建设制作设计平台wordpress顶部导航栏怎么创建
  • 理解 Git 命令 `git reset --hard origin/pre`:版本回退的“利刃”与使用禁忌
  • Git 10 ,使用 SSH 提升 Git 操作速度的实践指南( Git 拉取推送响应慢 )
  • 【C++】使用MSBuild命令行编译ACE、TAO、DDS
  • 郑州市建设投资集团公司网站网站开发私活
  • ⽹络原理-HTTP/HTTPS
  • 58同城哈尔滨网站建设宁波网络公司网站建s
  • windows系统实操Flutter鸿蒙环境搭建