0

0

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

霞舞

霞舞

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

|

532人浏览过

|

来源于php中文网

原创

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

JavaScript 类:现代面向对象编程

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


类定义

使用 class 关键字定义类:

示例:

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 岁。

核心特性

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

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

    示例:

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

    示例:

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

    示例:

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

    Grokipedia
    Grokipedia

    xAI推出的AI在线百科全书

    下载

    示例:

    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

类继承

使用 extends 关键字实现继承:

示例:

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 汪汪叫。

私有字段和方法 (ES2022)

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

示例:

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' 无法访问

类表达式

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

示例:

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

原型继承与类的结合

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

示例:

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

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

最佳实践

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

总结

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

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

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
es6新特性
es6新特性

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

106

2023.07.17

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

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

195

2023.08.04

JavaScript ES6新特性
JavaScript ES6新特性

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

222

2025.12.24

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

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

56

2025.09.05

java面向对象
java面向对象

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

52

2025.11.27

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

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

397

2023.07.18

堆和栈区别
堆和栈区别

堆(Heap)和栈(Stack)是计算机中两种常见的内存分配机制。它们在内存管理的方式、分配方式以及使用场景上有很大的区别。本文将详细介绍堆和栈的特点、区别以及各自的使用场景。php中文网给大家带来了相关的教程以及文章欢迎大家前来学习阅读。

575

2023.08.10

class在c语言中的意思
class在c语言中的意思

在C语言中,"class" 是一个关键字,用于定义一个类。想了解更多class的相关内容,可以阅读本专题下面的文章。

469

2024.01.03

C++ 设计模式与软件架构
C++ 设计模式与软件架构

本专题深入讲解 C++ 中的常见设计模式与架构优化,包括单例模式、工厂模式、观察者模式、策略模式、命令模式等,结合实际案例展示如何在 C++ 项目中应用这些模式提升代码可维护性与扩展性。通过案例分析,帮助开发者掌握 如何运用设计模式构建高质量的软件架构,提升系统的灵活性与可扩展性。

0

2026.01.30

热门下载

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

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
10分钟--Midjourney创作自己的漫画
10分钟--Midjourney创作自己的漫画

共1课时 | 0.1万人学习

Midjourney 关键词系列整合
Midjourney 关键词系列整合

共13课时 | 0.9万人学习

AI绘画教程
AI绘画教程

共2课时 | 0.2万人学习

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

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号