讲师中心 微信公众号
AI工具推荐 视频效率加速

掌握 JavaScript 类:现代 OOP 完整指南

大杰小哥_6293

大杰小哥_6293

发布时间:2024-12-18 19:45:32

|

552人浏览过

|

来源于php中文网

原创

掌握 javascript 类:现代 oop 完整指南

JavaScript 类:现代面向对象编程

ES6 引入的 JavaScript 类,是基于原型继承的语法糖衣,提供了一种更清晰、结构化的方法来定义和使用对象以及继承机制,从而提升代码的可读性和组织性。


类定义

使用 class 关键字定义类:

示例:

<code class="javascript">class Person {
  constructor(name, age) {
    this.name = name;
    this.age = age;
  }

  greet() {
    console.log(`您好,我的名字是 ${this.name},我 ${this.age} 岁。`);
  }
}

const person1 = new Person("Alice", 25);
person1.greet(); // 您好,我的名字是 Alice,我 25 岁。</code>

核心特性

  1. 构造函数 (constructor): 用于初始化对象实例的特殊方法,在创建新实例时自动调用。

    立即学习“Java免费学习笔记(深入)”;

    示例:

    <code class="javascript">class Car {
      constructor(brand) {
        this.brand = brand;
      }
    }
    
    const myCar = new Car("Toyota");
    console.log(myCar.brand); // Toyota</code>
  2. 方法 (Methods): 类内部定义的函数。

    示例:

    <code class="javascript">class Animal {
      makeSound() {
        console.log("动物发出声音");
      }
    }
    
    const dog = new Animal();
    dog.makeSound(); // 动物发出声音</code>
  3. 静态方法 (Static Methods): 使用 static 关键字定义,属于类本身,而非实例。

    示例:

    <code class="javascript">class MathUtils {
      static add(a, b) {
        return a + b;
      }
    }
    
    console.log(MathUtils.add(3, 5)); // 8</code>
  4. Getter 和 Setter: 用于访问和修改属性的特殊方法。

    Percept Speaker ID
    Percept Speaker ID

    在多人对话中识别和追踪说话者,将说话者标签映射到姓名,并管理语音命令授权级别。

    下载

    示例:

    <code class="javascript">class Rectangle {
      constructor(width, height) {
        this.width = width;
        this.height = height;
      }
    
      get area() {
        return this.width * this.height;
      }
    }
    
    const rect = new Rectangle(10, 5);
    console.log(rect.area); // 50</code>

类继承

使用 extends 关键字实现继承:

示例:

<code class="javascript">class Animal {
  constructor(name) {
    this.name = name;
  }

  speak() {
    console.log(`${this.name} 发出声音。`);
  }
}

class Dog extends Animal {
  speak() {
    console.log(`${this.name} 汪汪叫。`);
  }
}

const dog = new Dog("Rex");
dog.speak(); // Rex 汪汪叫。</code>

私有字段和方法 (ES2022)

以 # 开头,只能在类内部访问。

示例:

<code class="javascript">class BankAccount {
  #balance;

  constructor(initialBalance) {
    this.#balance = initialBalance;
  }

  deposit(amount) {
    this.#balance += amount;
    console.log(`存款:${amount}`);
  }

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

const account = new BankAccount(100);
account.deposit(50); // 存款:50
console.log(account.getBalance()); // 150
// console.log(account.#balance); // Error: 私有字段 '#balance' 无法访问</code>

类表达式

类可以定义为表达式并赋值给变量:

示例:

<code class="javascript">const Rectangle = class {
  constructor(width, height) {
    this.width = width;
    this.height = height;
  }

  getArea() {
    return this.width * this.height;
  }
};

const rect = new Rectangle(10, 5);
console.log(rect.getArea()); // 50</code>

原型继承与类的结合

类可以与 JavaScript 的原型继承结合使用。

示例:

<code class="javascript">class Person {}
Person.prototype.sayHello = function() {
  console.log("你好!");
};

const person = new Person();
person.sayHello(); // 你好!</code>

最佳实践

  1. 封装: 使用私有字段保护数据。
  2. 可重用性: 利用继承重用代码。
  3. 避免过度复杂: 适度使用类。
  4. 一致性: 遵循命名规范。

总结

JavaScript 类提供了一种更清晰、高效的面向对象编程方式,通过继承、静态方法、私有字段和封装等特性,方便构建可扩展、易维护的应用程序。

作者:Abhay Singh Kathayat
全栈开发人员,精通多种编程语言和框架。联系邮箱:kaashshorts28@gmail.com

热门AI工具

更多
SkildArt
SkildArt Hot

SkildArt是一款AI文本写作工具,一站式 AI 视觉创作平台。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

VibeKnow
VibeKnow Hot

一款AI视频创作工具,主要用于全球首个AI知识视频创作平台,文档、文章、网页,一键生成视频,适合需要提升相关任务效率的用户。

UP简历
UP简历 Hot

一款AI办公效率工具,主要用于基于AI技术的免费在线简历制作工具,适合需要提升相关任务效率的用户。

立刻MV
立刻MV Hot

立刻MV是一款AI文本写作工具,AI 音乐视频(MV)创作工具。

AionClaw
AionClaw Hot

AionClaw是一款面向办公、创作和编程任务的AI桌面智能体。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

Laper
Laper Hot

Laper是专为编剧、导演和制片人推出的 AI 原生剧本创作工具。

相关专题

更多
es6新特性
es6新特性

es6新特性有:1、块级作用域变量;2、箭头函数;3、模板字符串;4、解构赋值;5、默认参数;6、 扩展运算符;7、 类和继承;8、Promise。本专题为大家提供es6新特性的相关的文章、下载、课程内容,供大家免费下载体验。

265

2023.07.17

es6新特性有哪些
es6新特性有哪些

es6的新特性有:1、块级作用域;2、箭头函数;3、解构赋值;4、默认参数;5、扩展运算符;6、模板字符串;7、类和模块;8、迭代器和生成器;9、Promise对象;10、模块化导入和导出等等。本专题为大家提供es6新特性的相关的文章、下载、课程内容,供大家免费下载体验。

386

2023.08.04

JavaScript ES6新特性
JavaScript ES6新特性

ES6是JavaScript的根本性升级,引入let/const实现块级作用域、箭头函数解决this绑定问题、解构赋值与模板字符串简化数据处理、对象简写与模块化提升代码可读性与组织性。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

355

2025.12.24

go语言 面向对象
go语言 面向对象

本专题整合了go语言面向对象相关内容,阅读专题下面的文章了解更多详细内容。

5875

2025.09.05

java面向对象
java面向对象

本专题整合了java面向对象相关内容,阅读专题下面的文章了解更多详细内容。

322

2025.11.27

C++ 面向对象编程与设计模式实践
C++ 面向对象编程与设计模式实践

本专题整合了 C++ 面向对象编程的核心机制,涵盖类的定义与访问控制、构造函数与析构函数、拷贝语义与移动语义、继承与虚函数多态、抽象类与接口、运算符重载、友元函数等关键知识点,同时结合单例模式、工厂模式、观察者模式、策略模式等常用设计模式的 C++ 实现,帮助开发者写出结构清晰、易于维护的面向对象代码。

324

2026.04.09

Java 面向对象与核心编程机制
Java 面向对象与核心编程机制

系统讲解 Java 面向对象编程的核心知识体系,涵盖类的定义与封装、构造方法与 this/super 关键字、继承与方法重写、多态与向上向下转型、抽象类与接口的区别与设计原则、异常处理机制(try-catch-finally / 自定义异常)、泛型的类型参数与通配符、集合框架(List/Set/Map)的使用与遍历方式,帮助开发者全面掌握 Java 程序设计的核心机制与面向对象思维。

223

2026.04.17

堆和栈的区别
堆和栈的区别

堆和栈的区别:1、内存分配方式不同;2、大小不同;3、数据访问方式不同;4、数据的生命周期。本专题为大家提供堆和栈的区别的相关的文章、下载、课程内容,供大家免费下载体验。

5247

2023.07.18

FrankenPHP集成Laravel详细教程
FrankenPHP集成Laravel详细教程

本专题提供FrankenPHP集成Laravel的详细配置指南,全面解析运行原理、开发环境搭建、Caddyfile配置、Octane工作模式、数据库连接、队列任务、定时任务和生产环境优化,解决部署过程中常见的报错与兼容性问题。

0

2026.10.08

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn