基于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日

相关文章

  • javascript函数自动执行常用方法汇总

    本文将详细讲解JavaScript函数自动执行的几种常用方法。 1. 什么是函数自动执行? 函数自动执行指的是在页面加载时或者在某个特定的事件触发时,函数自动被执行。这种自动执行的函数我们称之为“自执行函数”。 自执行函数的定义形式有两种: // 匿名函数方式 (function(){ // code here })(); // 具名函数方式 (functi…

    JavaScript 2023年5月27日
    00
  • javascript学习笔记(三)显示当时时间的代码

    下面是关于“javascript学习笔记(三)显示当时时间的代码”的完整攻略。 前置知识 在学习本文之前,你需要掌握以下知识: HTML 基础 CSS 基础 Javascript 语法基础 确定功能 在开始编写代码之前,我们需要确定显示当前时间的具体功能。 我们要实现的功能是:在页面上显示当前的时间,并且能够实时更新。 编写代码 HTML结构 在HTML中,…

    JavaScript 2023年5月27日
    00
  • JS实现表单中点击小眼睛显示隐藏密码框中的密码

    当用户在表单中输入密码时,通常会提供一个“显示密码”的选项,这使得用户可以查看其输入的密码而不必担心输错。下面是一些使用JavaScript实现显示密码选项的攻略。 第一步:HTML结构 首先,我们需要创建一个包含密码和复选框的HTML结构。在密码输入框后面放置一个复选框,在复选框后面标注“显示密码”。以下是HTML代码示例: <label> P…

    JavaScript 2023年6月10日
    00
  • JS hasOwnProperty()方法检测一个属性是否是对象的自有属性的方法

    JS中的hasOwnProperty()方法是用来检测一个属性是否是某个对象的自有属性的方法。它是基于原型链的继承机制的,只有当所查询的属性是对象本身的属性时才会返回true。 语法: object.hasOwnProperty(prop) 其中object是必需的,表示要检查属性的对象,prop参数也是必需的,表示要检查的属性名称,传入的参数是字符串类型。…

    JavaScript 2023年6月10日
    00
  • Element-Plus el-col、el-row快速布局及使用方法

    Element-Plus el-col、el-row快速布局及使用方法 Element-Plus是一套基于Vue3的UI框架,其中包含了el-col、el-row等快速布局组件。在本攻略中,我们将详细讲解Element-Plus中el-col、el-row的使用方法,以及如何快速进行页面布局。 el-col组件 基本用法 el-col组件用于将页面水平分成2…

    JavaScript 2023年6月10日
    00
  • js控制的回到页面顶端goTop的代码实现

    下面我给你详细讲解“JS控制的回到页面顶端goTop的代码实现”的完整攻略。 1. 设置页面结构 首先,我们需要在HTML文件中添加一个按钮并设置其CSS样式。示例代码如下: <button id="goTop">回到顶部</button> <style> #goTop { position: fixe…

    JavaScript 2023年6月11日
    00
  • 前端面试之对安全防御的理解分析

    前言 在前端开发领域中,安全防御一直是非常重要的一个方面。因为web应用程序是非常容易受到攻击的,如果没有恰当的安全措施,可能会导致各种问题,如身份盗窃、数据泄露、远程执行代码等。 在进行前端面试时,关于安全防御的理解和分析,是一个非常常见的问题。因此,在本篇攻略中,我将从多个角度对前端安全防御进行分析和讲解,帮助大家更好地理解前端安全防御的重要性和实现方式…

    JavaScript 2023年6月10日
    00
  • JS学习之一个简易的日历控件

    下面是针对“JS学习之一个简易的日历控件”的完整攻略。 介绍 这是一篇教程,讲解如何使用JavaScript实现一个简易的日历控件。通过阅读教程,您将学会以下内容: 理解日历的基本概念和操作 创建一个日历控件的HTML结构 通过JavaScript实现控件的基本功能和逻辑 通过这个教程,您将同时学习到HTML和JavaScript的知识,提高自己的前端开发技…

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