基于JavaScript 类的使用详解

基于 JavaScript 类的使用详解

JavaScript 的 Class 定义是一种专门为对象的构建提供的语法糖。在ES6之前,JavaScript没有类(class)的概念,只能通过构造函数和原型对象来实现。

类的定义和语法

定义一个类可以使用 class 关键字,后面跟着类名和一对大括号 {}。 大括号内部可以定义类的属性和方法。使用 constructor 方法来定义当对象实例化时所执行的构造函数。

class Person {
  constructor(name, age) {
    this.name = name;
    this.age = age;
  }
  greeting() {
    console.log(`My name is ${this.name} and I'm ${this.age} years old.`);
  }
}

以上是一个最基本的类的定义。在类的构造函数上,接收了两个参数,分别为 nameage,类实例化时需传入这两个参数。在类中,我们还定义了一个 greeting() 方法用来向控制台输出类实例的信息。

实例化一个类

实例化类时,需要使用 new 操作符来调用类的构造函数,并返回一个类的实例。

const person1 = new Person('John', 30);
person1.greeting();

以上代码将会输出:

My name is John and I'm 30 years old.

类的继承

类的继承是一种面向对象编程中非常重要的概念,它允许我们创建一个新的类,从一个已经存在的类上继承属性和方法。

class Customer extends Person {
  constructor(name, age, balance) {
    super(name, age);
    this.balance = balance;
  }
  getInfo() {
    return `${this.name} owes ${this.balance}.00`;
  }
}

在以上示例中,我们创建了一个 Customer 类,并将其从 Person 类上继承下来。Customer 类比 Person 类更加具体,包含额外的 balance 属性,并修改了 getInfo() 方法以反映出这个新增的属性。super() 方法调用了父类的构造器,因此在 Customer 类中,我们可以直接调用 this.namethis.age

接下来,我们可以通过 new 操作符来实例化一个 Customer 对象。

const customer1 = new Customer('Tom', 35, 200);
console.log(customer1.greeting()); // My name is Tom and I'm 35 years old.
console.log(customer1.getInfo()); // Tom owes 200.00

输出结果为:

My name is Tom and I'm 35 years old.
Tom owes 200.00

示例 1:使用类定义一个矩形对象,并计算其面积和周长

我们可以创建一个用于计算矩形面积和周长的类。

class Rectangle {
  constructor(length, width) {
    this.length = length;
    this.width = width;
  }

  // 计算矩形的周长
  perimeter() {
    return 2 * (this.length + this.width);
  }

  // 计算矩形的面积
  area() {
    return this.length * this.width;
  }
}

在以上示例中,声明了一个 Rectangle 类,其构造函数接收两个参数 lengthwidth。我们也声明了两个方法 perimeter()area(),以分别计算矩形的周长和面积。

接下来,我们可以实例化一个 Rectangle 对象,并使用其 perimeter()area() 方法来计算矩形的周长和面积。

const rectangle1 = new Rectangle(5, 10);

console.log(rectangle1.perimeter()); // 30
console.log(rectangle1.area()); // 50

输出的结果为:

30
50

示例 2:用一个类管理一个 TODO 列表

我们也可以使用类来管理一个简单的 Todo List。在以下示例中,我们创建了一个 Todo 类,每个 Todo 实例都包含两个属性:textisCompleted。我们可以通过 addTodo() 方法将待办事项添加到列表中。我们还实现了 deleteTodo() 方法,以便从列表中删除已完成的任务。

class Todo {
  constructor() {
    this.list = [];
  }

  // 添加待办事项
  addTodoItem(text) {
    const todo = {
      text: text,
      isCompleted: false
    };
    this.list.push(todo);
  }

  // 删除已完成的任务
  deleteCompletedItems() {
    this.list = this.list.filter(todo => !todo.isCompleted);
  }

  // 设置任务为已完成
  setTodoItemComplete(index) {
    this.list[index].isCompleted = true;
  }

  // 输出任务列表
  displayTodoList() {
    console.log(this.list);
  }
}

以上代码创建了一个 Todo 类,其构造函数定义了一个空的 list 数组,其中 addTodoItem() 方法以待办事项的名字作为参数,将一个代办事项添加到列表中。我们还实现了 deleteCompletedItems() 方法,以便从列表中删除已完成的任务;setTodoItemComplete() 方法,以将任务标记为已完成;displayTodoList() 方法,以将所有待办任务输出到控制台。

以下是如何实例化 Todo 类,并向其列表中添加、删除和完成任务的示例。

const todoList = new Todo();

todoList.addTodoItem('Buy milk');
todoList.addTodoItem('Learn JavaScript');
todoList.displayTodoList(); // 输出两个待办事项对象

// 将第1项任务标记为已完成
todoList.setTodoItemComplete(0);
todoList.displayTodoList(); // 输出两个待办事项对象,但第1项任务被标记为已完成

// 删除已完成过的任务
todoList.deleteCompletedItems();
todoList.displayTodoList(); // 输出1个待办事项,即“Learn JavaScript”

输出的结果为:

[
  { text: 'Buy milk', isCompleted: false },
  { text: 'Learn JavaScript', isCompleted: false }
]
[
  { text: 'Buy milk', isCompleted: true },  // 自动标记
  { text: 'Learn JavaScript', isCompleted: false }
]
[{ text: 'Learn JavaScript', isCompleted: false }]

综上所述,JavaScript 类是在现代 JavaScript 中非常重要的一个概念。类让我们能够更好地组织代码、增加代码的可读性,也让我们的代码更加符合面向对象的编程范式。同时,也有利于我们更好地复用和维护代码。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:基于JavaScript 类的使用详解 - Python技术站

(0)
上一篇 2023年5月18日
下一篇 2023年5月18日

相关文章

  • assert()函数用法总结(推荐)

    当我们编写程序时,为了保证程序的正常运行,需要对程序中的各个部分进行测试和验证。而assert()函数就是一个非常常用的测试和验证工具。 assert()函数介绍 assert()函数是C语言头文件中的一种调试工具,包含于库中。其作用是,如果传入的参数为0(即假),则表达式为false,会触发assert()函数,程序将会停止运行。assert()函数用于检…

    JavaScript 2023年6月10日
    00
  • JavaScript实现url参数转成json形式

    当我们使用JavaScript处理URL的参数时,有时候需要将URL的参数转换为JSON形式来进行处理。下面我将为您提供JavaScript实现URL参数转为JSON的完整攻略: 利用window.location.search获取URL参数部分; 将URL参数部分解析为键值对对象; 将对象转换为JSON格式。 下面是详细步骤的代码实现: 1. 利用wind…

    JavaScript 2023年5月27日
    00
  • ajaxrequest.js ajaxrequest 0.7最新版 使用AJAXRequest进行AJAX应用程序开发入门小技巧

    使用AJAXRequest进行AJAX应用程序开发 AJAXRequest是一个轻量级的JavaScript库,旨在为基于AJAX的应用程序提供优雅而简单的开发方式。AJAXRequest 0.7是最新版本,适用于简单的AJAX请求和响应处理。 安装 你可以从GitHub下载AJAXRequest 0.7的源代码,也可以从CDN上使用以下代码: <sc…

    JavaScript 2023年6月11日
    00
  • JS获取表单中的元素和取值方法

    JS获取表单中的元素和取值方法是网页开发中非常基础和重要的知识点。在网页开发过程中,除了表单元素之外,其他元素并不会搜集到浏览器向服务器请求数据的参数中,因此我们需要使用Javascript来获取表单中的元素,并取值传递给服务器,实现表单的提交等操作。下面是获取表单中元素和取值方法的攻略: 获取表单中元素 表单元素可以通过id、name、标签名或者其他自定义…

    JavaScript 2023年6月10日
    00
  • DOM基础教程之事件类型

    下面是关于“DOM基础教程之事件类型”的完整攻略: 1. 什么是事件? 事件是指用户在与页面进行交互时所发生的情况,如鼠标点击、键盘敲击、表单提交等。开发者可以通过JavaScript代码来响应这些事件,从而实现与用户进行有效的交互。 2. 事件类型 DOM中常见的事件类型有: 鼠标事件:onclick, ondblclick, onmousedown, o…

    JavaScript 2023年6月10日
    00
  • JS div匀速移动动画与变速移动动画代码实例

    关于JS div匀速移动动画与变速移动动画代码实例,我为你提供以下攻略。 1. 匀速移动动画 匀速移动动画的实现方法常见的有两种方式: (1)通过定时器 setInterval() 不断执行移动过程 function moveBySetInterval(ele, speed) { clearInterval(ele.timerId); ele.timerId…

    JavaScript 2023年6月10日
    00
  • javascript数组去重的方法汇总

    针对“javascript数组去重的方法汇总”的话题,我将为您提供完整的攻略,并给出两条示例说明。 一、问题背景 在javascript开发中,很常见的问题是如何从一个数组中找出不重复的数据。数组去重在实际开发中非常有用,例如:从数据库中查询数据后想要去除相同项展示给用户,或者需要合并两个数组并去除重复项。本文将为大家总结一下常用的去重方法。 二、方法汇总 …

    JavaScript 2023年5月27日
    00
  • 微信小程序 时间格式化(util.formatTime(new Date))详解

    为了实现微信小程序的时间格式化,我们可以使用util.formatTime()函数。这个函数将一个Date对象转换为对应的字符串形式,具体格式化方式由传入的参数进行控制。 以下是“微信小程序 时间格式化(util.formatTime(new Date))详解”攻略的详细实现过程: 1. 引入util模块 在微信小程序中使用util模块需要先引入该模块,使用…

    JavaScript 2023年5月27日
    00
合作推广
合作推广
分享本页
返回顶部