JavaScript 类的封装操作示例详解

JavaScript类的封装操作示例详解

类是现代 JavaScript 开发中最常见的封装形式之一,通过类的封装可以将相关代码组织在一起,实现更好的封装和抽象。本篇攻略将介绍 JavaScript 类的封装操作,并提供两个示例供参考。

定义一个类

定义一个类的基础语法与 C++、Java 等语言类似,通过 class 关键字加上类的名称定义一个类,类的主体部分则由一对大括号组成。

class Person {
  // 类的属性
  name;
  age;

  // 类的方法
  constructor(name, age) {
    this.name = name;
    this.age = age;
  }

  sayHello() {
    console.log(`Hello, my name is ${this.name}, and I am ${this.age} years old`);
  }
}

上述代码定义了一个 Person 类,该类有两个属性 nameage 以及一个方法 sayHello。其中 constructor 方法是类的构造函数,用于初始化对象的属性。

实例化对象

类是一个模板,通过该模板可以创建出多个实例对象。实例化对象时,使用 new 关键字加上类的名称即可。

const person = new Person('Tom', 18);

person 实例对象拥有类的属性和方法,可以使用 .name.age 访问对象的属性,使用 .sayHello() 调用对象的方法。

类的继承

JavaScript 类也支持继承操作,通过 extends 关键字来实现。

class Student extends Person {
  id;

  constructor(name, age, id) {
    // 调用父类的构造函数
    super(name, age);
    this.id = id;
  }

  study() {
    console.log(`${this.name} is studying.`);
  }
}

上述代码定义了一个 Student 类,该类继承自 Person 类,具有类的属性 nameageid,以及类的方法 constructorstudy。在 constructor 方法中使用 super 关键字调用父类的构造函数,以初始化 nameage 属性。

示例一:封装队列类

下面将给出一个封装队列的示例。

class Queue {
  data = [];

  // 入队操作
  enqueue(item) {
    this.data.push(item);
  }

  // 出队操作
  dequeue() {
    return this.data.shift();
  }

  // 判断队列是否为空
  isEmpty() {
    return this.data.length === 0;
  }
}

上述代码定义了一个 Queue 类,该类有一个属性 data、三个方法 enqueuedequeueisEmptyenqueue 方法实现入队操作,将一个元素加入队列末尾;dequeue 方法实现出队操作,将队列头部元素弹出并返回;isEmpty 方法返回队列是否为空。

使用示例:

const queue = new Queue();
queue.enqueue('A');
queue.enqueue('B');
queue.enqueue('C');

console.log(queue.isEmpty()); // 输出 false
console.log(queue.dequeue()); // 输出 A
console.log(queue.dequeue()); // 输出 B
console.log(queue.dequeue()); // 输出 C
console.log(queue.isEmpty()); // 输出 true

示例二:封装日期类

下面将给出一个封装日期类的示例。

class MyDate {
  year;
  month;
  day;

  constructor(year, month, day) {
    this.year = year;
    this.month = month;
    this.day = day;
  }

  // 将日期格式化为字符串
  toString() {
    return `${this.year}-${this.month}-${this.day}`;
  }

  // 获取该日期所在的年份
  getYear() {
    return this.year;
  }

  // 获取该日期所在的月份
  getMonth() {
    return this.month;
  }

  // 获取该日期所在的日份
  getDay() {
    return this.day;
  }

  // 判断当前日期是否是闰年
  isLeapYear() {
    return (this.year % 4 === 0 && this.year % 100 !== 0) || this.year % 400 === 0;
  }
}

上述代码定义了一个 MyDate 类,该类有三个属性 yearmonthday,以及四个方法 constructortoStringgetYearisLeapYear。其中 constructor 方法用于初始化日期的年、月、日;toString 方法用于将日期格式化为字符串;getYeargetMonthgetDay 三个方法分别返回日期的年、月、日;isLeapYear 方法用于判断当前日期所在的年份是否是闰年。

使用示例:

const date = new MyDate(2021, 9, 31);
console.log(date.toString()); // 输出 2021-9-31
console.log(date.getYear()); // 输出 2021
console.log(date.getMonth()); // 输出 9
console.log(date.getDay()); // 输出 31
console.log(date.isLeapYear()); // 输出 false

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JavaScript 类的封装操作示例详解 - Python技术站

(0)
上一篇 2023年6月10日
下一篇 2023年6月10日

相关文章

  • jquery插件推荐 jquery.cookie

    下面我将为你详细讲解如何使用“jquery.cookie”这个jQuery插件。 什么是jquery.cookie? jquery.cookie是一个用于读取、写入和删除cookie的jQuery插件。Cookie是一种存储在用户计算机中的小文件,用于存储网站的一些信息或用户的偏好设置等等。通过使用jquery.cookie插件,我们可以轻松地操作这些coo…

    JavaScript 2023年6月11日
    00
  • 利用javascript查看html源文件

    想要在网页中查看HTML源文件,可以使用JavaScript来实现。具体的实现方法如下: 使用document.documentElement.outerHTML属性,将整个HTML源代码保存在该属性中,并将其打印到控制台上。 console.log(document.documentElement.outerHTML); 使用该方法能够查看整个HTML文档…

    JavaScript 2023年5月27日
    00
  • 详解JavaScript中return的用法

    让我们来详细讲解一下 “详解JavaScript中return的用法”: 什么是return? return 是 JavaScript 中的一个关键字,用于将函数的返回值返回给函数的调用者。 return 语句用于终止函数的执行,并返回函数的结果。 在函数中使用 return 在一个函数中,只要遇到 return 语句,函数的执行就会被中断,并将 retur…

    JavaScript 2023年5月27日
    00
  • 纯js实现页面返回顶部的动画(超简单)

    以下是纯JS实现页面返回顶部动画的攻略: 1. 准备工作 在 HTML 的 head 标签中引入一个自定义的 JavaScript 文件,比如: <head> <script src="js/scroll-top.js"></script> </head> 2. 编写 JavaScript …

    JavaScript 2023年6月10日
    00
  • JavaScript优化以及前段开发小技巧

    JavaScript 优化以及前端开发小技巧 1. JavaScript 优化 1.1 减少 HTTP 请求 当页面中存在大量的 HTTP 请求时,可能导致页面加载缓慢。因此需要考虑如何减少页面中的 HTTP 请求,以提高网页加载速度。以下几种方法可以用来减少 HTTP 请求: 使用 CSS Sprite:将多张图片整合到一张图中,减少HTTP请求次数。 合…

    JavaScript 2023年5月18日
    00
  • js对象数组按属性快速排序

    下面就是关于“js对象数组按属性快速排序”的完整攻略: 1. 排序算法 在排序算法方面,我们可以使用JavaScript内置的sort()函数。sort()方法可以按照指定的方法对数组的元素进行排序,默认排序方式为按字母顺序。如果想要按属性对js对象数组进行排序,则需要传入一个比较函数。 比较函数的语法格式为: function compare(a, b) …

    JavaScript 2023年6月10日
    00
  • JavaScript面向对象编写购物车功能

    当我们在构建一个购物车功能时,可以采用JavaScript面向对象编程的方式来实现。下面是一个完整的攻略: 1. 设计购物车功能 首先要明确购物车的功能和特点,确定购物车所需要存储的数据。 在购物车中,我们需要存储商品的信息,如名称、价格、数量等,同时还需要实现添加、删除、修改商品以及计算购物车总价等功能。 我们可以创建一个Car对象来代表购物车,同时定义一…

    JavaScript 2023年6月11日
    00
  • javaScript字符串工具类StringUtils详解

    JavaScrip字符串工具类StringUtils详解 什么是StringUtils? StringUtils是一种JavaScript字符串操作工具类,它提供了一系列操作字符串的方法,方便我们在开发中对字符串进行处理。 使用方法 安装 可以使用npm进行安装,命令为: npm install string-utils 引入 需要在JavaScript代码…

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