新闻中心

J*aScript中的类(Class)与继承详解_js ES6+

2025-11-16
浏览次数:
返回列表
J*aScript中的类是ES6语法糖,基于原型机制提供更清晰的面向对象编程方式。使用class定义类,包含constructor初始化实例,方法无需function关键字且挂载于原型;static定义静态方法,属类本身;通过extends实现继承,子类需调用super()并可重写父类方法;ES2025支持#前缀的私有字段和公共字段语法,提升封装性与可读性。

javascript中的类(class)与继承详解_js es6+

J*aScript 中的类(Class)是 ES6 引入的一种语法糖,让开发者可以用更接近传统面向对象语言的方式来创建对象和实现继承。虽然底层依然是基于原型(prototype)的机制,但 class 的写法更清晰、更易理解。

类的基本语法

使用 class 关键字可以定义一个类。类中通常包含一个 constructor 方法用于初始化实例,以及其它自定义方法。

示例:

class Person {
  constructor(name, age) {
    this.name = name;
    this.age = age;
  }

  sayHello() {
    console.log(`你好,我是${this.name},今年${this.age}岁`);
  }
}

const p1 = new Person("小明", 25);
p1.sayHello(); // 输出:你好,我是小明,今年25岁

说明:

  • constructor 是构造函数,创建实例时自动调用。
  • 类中的方法不需要加 function 关键字。
  • 所有方法都定义在类的原型上,相当于挂载到 prototype 对象中。

静态方法(static)

使用 static 关键字定义的方法属于类本身,而不是实例。不能通过实例调用,只能通过类名调用。

class MathUtils {
  static add(a, b) {
    return a + b;
  }
}

console.log(MathUtils.add(2, 3)); // 输出:5

// const mu = new MathUtils();
// mu.add(2, 3); // 报错:mu.add is not a function

静态方法常用于工具类或与类相关但不依赖实例数据的操作。

类的继承(extends 和 super)

使用 extends 可以实现类的继承,子类可以继承父类的属性和方法。在子类的 constructor 中必须先调用 super(),否则无法使用 this

Visla Visla

AI视频生成器,快速轻松地将您的想法转化为视觉上令人惊叹的视频。

Visla 100 查看详情 Visla
class Student extends Person {
  constructor(name, age, grade) {
    super(name, age); // 调用父类构造函数
    this.grade = grade;
  }

  study() {
    console.log(`${this.name} 正在学习,年级:${this.grade}`);
  }

  // 重写父类方法
  sayHello() {
    console.log(`我是学生 ${this.name},${this.age}岁,读${this.grade}年级`);
  }
}

const s1 = new Student("小红", 20, "大三");
s1.sayHello(); // 输出:我是学生 小红,20岁,读大三
s1.study();    // 输出:小红 正在学习,年级:大三

关键点:

  • extends 指定继承的父类。
  • super() 在子类构造函数中调用父类构造函数。
  • 子类可以添加新方法,也可以重写父类方法。
  • 子类也能调用父类被覆盖的方法:super.sayHello()

私有字段与公共字段语法(ES2025+)

现代 J*aScript 支持在类中定义私有字段,使用 # 前缀表示,外部无法访问。

class BankAccount {
  #balance = 0; // 私有字段

  deposit(amount) {
    if (amount > 0) {
      this.#balance += amount;
    }
  }

  getBalance() {
    return this.#balance;
  }
}

const account = new BankAccount();
account.deposit(100);
console.log(account.getBalance()); // 100
// console.log(account.#balance); // 语法错误:无法外部访问

公共字段语法允许直接在类中定义属性,无需放在 constructor 中:

class Counter {
  count = 0; // 公共字段

  increment() {
    this.count++;
  }
}
</font>

这种写法更简洁,适合初始化默认值。

基本上就这些。class 让 J*aScript 的面向对象编程更直观,结合 extendssuperstatic 和私有字段,已经能满足大多数场景的需求。虽然本质仍是原型继承,但语法更现代、更易维护。

以上就是J*aScript中的类(Class)与继承详解_js ES6+的详细内容,更多请关注其它相关文章!


# 小明  # 湖北网站推广商  # 山东营销推广活动  # 吉林关键词排名哪家靠谱  # seo头像图文  # 沈阳酒店家具网站建设  # 面对内部人员的营销推广  # seo竞争比赛  # 奶妈求职网站建设  # seo化学元素是什么  # 晋中德阳网站建设  # 更清晰  # 更易  # 有什么区别  # javascript  # 小红  # 类中  # 重写  # 我是  # 面向对象  # 子类  # 封装性  # 面向对象编程  # 工具  # js  # java  # es6 


相关栏目: 【 科技资讯46185 】 【 网络学院92790


相关推荐: J*aScript中向JSON对象添加新属性的正确姿势  NetBeans Ant项目:自动化将资源文件复制到dist目录的教程  顺丰快件物流信息 官方网站查询入口  PHP中SSG-WSG API的AES加密实践:正确使用初始化向量  192.168.1.1管理中心入口 192.168.1.1路由器网页设置平台  谷歌google账号注册详细步骤 谷歌账号注册官方教程  抖音网页版企业服务中心登录入口_抖音网页版企业登录平台  蛙漫画网页版全站入口 蛙漫热门作品免费浏览  解决macOS Tkinter应用双击启动崩溃:PyInstaller打包指南  苹果手机如何防止被恶意App追踪  C++如何实现线程池_C++11手动实现一个简单的固定大小线程池  J*a中实现Go语言select通道多路复用机制  c++如何使用TBB库进行任务并行_c++ Intel线程构建模块  快手官方唯一登录入口 谨防山寨钓鱼网站  探索高级语言到原生C/C++的转译:挑战与内存管理策略  解决 MongoDB 聚合查询中对象数组 _id 匹配问题  使用Python高效删除Word宏并转换DOCM为DOCX格式  必由学在线入口 必由学网页版快速登录入口  漫蛙2(台版)官方入口地址 漫蛙2(台版)正版漫画网页端  俄罗斯Yandex免登录入口_Yandex搜索引擎官网一键直达  哔哩哔哩忘记密码了怎么找回_哔哩哔哩密码找回方法  Pandas DataFrame 多条件优先级排序与排名  谷歌浏览器最新官方入口链接 谷歌浏览器网页版官网导航  蛙漫官网漫画入口地址_蛙漫在线畅读无广告弹窗  KFC套餐升级怎么获取优惠代码_KFC套餐升级活动与优惠代码获取方法  在Runstone环境中高效处理TasteDive API的JSON数据  c++如何实现一个简单的ECS框架_c++数据驱动设计与游戏开发  漫蛙漫画登录站点 漫蛙2正版漫画快速访问  魅族17怎样用浏览器译外语网页_iPhone魅族17浏览器译外语网页【即时翻译】  漫蛙2正版漫画站 漫蛙2网页版快速访问入口  谷歌浏览器一键优化方案_谷歌浏览器直达主页极速不卡版  小米汽车11月交付量突破40000台!雷军:将继续努力  css元素hover动画延迟生效怎么办_使用animation-delay调整触发时间  一加 14R 快充无反应_一加 14R 充电优化  在Go语言中利用后缀数组处理多字符串:实现高效文本匹配与自动补全  解决移动端滚动问题的overflow属性应用指南  俄罗斯Yandex搜索引擎入口_Yandex官网免登录一键访问  文心一言怎样用插件调度API数据_文心一言用插件调度API数据【API调用】  ACG动漫视频网入口 ACG动漫*免费正版观看地址  铁路12306改签能改到更早的车次吗_铁路12306改签提前车次规则  智慧团建扫码登录入口 智慧团建扫码登录入口官网版​  自定义Bag-of-Words实现:处理带负号的词汇权重  海棠账号登录入口_登录海棠账户同步阅读记录  AO3最新入口2025公告_AO3中文官网合集  AI泡沫首次被“刺破”:GPU十年都无法存活!  React Router v6 教程:构建认证保护的私有路由与重定向策略  优化Django表单:提交验证失败后保留用户输入  MAC如何安全彻底地删除文件_MAC使用终端命令确保文件无法被恢复  J*a递归快速排序中静态变量导致数据累积的陷阱与解决方案  Win11如何使用Windows Sandbox Win11沙盒功能开启与使用教程【详解】 

搜索