JavaScript中什么是类,如何使用?

在JavaScript中,类是一种用于创建对象的模板。它定义了对象的属性和方法,并可以通过实例化来创建具体的对象。类提供了一种结构化的方式来组织和管理代码,使得代码更易于理解和维护。

下面我将通过三个例子来详细说明JavaScript中类的概念和使用方法。

例子1:创建一个表示人的类

class Person {constructor(name, age) {this.name = name;this.age = age;}sayHello() {console.log(`Hello, my name is ${this.name} and I'm ${this.age} years old.`);}
}const person1 = new Person('Alice', 25);
person1.sayHello(); // 输出: Hello, my name is Alice and I'm 25 years old.

这段代码定义了一个名为Person的JavaScript类,用于创建表示人的对象。下面是对代码的详细解析:

  1. 类定义

    • class Person { ... }:声明了一个名为Person的类。在JavaScript中,类是一种特殊的函数,用于创建具有特定属性和方法的对象(即实例)。
  2. 构造函数

    • constructor(name, age) { ... }:这是Person类的构造函数。构造函数会在使用new关键字创建类的实例时自动调用。
    • this.name = name; 和 this.age = age;:这两行代码分别将传入的nameage参数赋值给新创建的实例的nameage属性。
  3. 方法定义

    • sayHello() { ... }:这是Person类的一个方法,用于让实例能够输出自我介绍信息。
    • console.log(Hello, my name is ${this.name} and I'm ${this.age} years old.);:该行代码在控制台打印一条消息,其中${this.name}${this.age}是模板字符串的占位符,会被this.namethis.age的实际值替换,展示实例的名字和年龄。
  4. 创建实例

    • const person1 = new Person('Alice', 25);:这行代码通过调用Person类的构造函数并传入'Alice'25作为参数,创建了一个名为person1Person实例。此时,person1对象具有name属性(值为'Alice')和age属性(值为25)。
  5. 方法调用

    • person1.sayHello();:调用person1实例的sayHello方法,执行结果是在控制台输出Hello, my name is Alice and I'm 25 years old.。这里展示了person1实例的名称和年龄。

总结:这段代码展示了如何使用ES6的类语法定义一个简单的类Person,以及如何创建这个类的实例并调用其方法来输出信息。

例子2:创建一个表示图形的类

class Shape {constructor(color) {this.color = color;}getColor() {return this.color;}setColor(newColor) {this.color = newColor;}
}class Circle extends Shape {constructor(color, radius) {super(color);this.radius = radius;}getArea() {return Math.PI * this.radius * this.radius;}
}const circle1 = new Circle('red', 5);
console.log(circle1.getColor()); // 输出: red
circle1.setColor('blue');
console.log(circle1.getColor()); // 输出: blue
console.log(circle1.getArea()); // 输出: 78.54

这段代码展示了JavaScript中的类继承和多态特性,具体解析如下:

  1. 基类 Shape 定义:

    • constructor(color):Shape 类的构造函数接收一个参数 color,并将其保存到实例的 color 属性中。
    • getColor():返回实例的 color 属性值。
    • setColor(newColor):设置实例的 color 属性为新的颜色值 newColor
  2. 子类 Circle 定义:

    • extends Shape:表示 Circle 类继承自 Shape 类,将继承 Shape 类的所有属性和方法。
    • constructor(color, radius):Circle 类的构造函数,首先通过 super(color) 调用父类 Shape 的构造函数以初始化 color 属性,然后设置 Circle 特有的属性 radius
    • getArea():计算并返回圆的面积,公式为 π * radius^2,这里使用 Math.PI 获取π的值。
  3. 创建 Circle 实例:

    • const circle1 = new Circle('red', 5);:创建了一个名为 circle1 的 Circle 类实例,其颜色为 'red',半径为 5。
  4. 方法调用与输出:

    • console.log(circle1.getColor()); // 输出: red:调用 circle1 的 getColor 方法,输出其颜色属性,即 'red'。
    • circle1.setColor('blue');:调用 circle1 的 setColor 方法,将其颜色改为 'blue'。
    • console.log(circle1.getColor()); // 输出: blue:再次调用 getColor 方法,确认颜色已更改为 'blue'。
    • console.log(circle1.getArea()); // 输出: 78.54:调用 getArea 方法计算并输出圆的面积,根据半径 5 计算出大约为 78.54(实际计算结果应为 78.53981633974483,四舍五入后接近 78.54)。

总结:这段代码演示了如何定义一个基类(Shape)和一个继承自基类的子类(Circle),以及如何在子类中添加新的属性和方法,并展示了实例化子类对象、调用继承和自定义方法的过程。

例子3:创建一个表示计算器的类

class Calculator {constructor() {this.result = 0;}add(number) {this.result += number;}subtract(number) {this.result -= number;}multiply(number) {this.result *= number;}divide(number) {this.result /= number;}clear() {this.result = 0;}getResult() {return this.result;}
}const calculator = new Calculator();
calculator.add(5);
calculator.multiply(2);
calculator.subtract(3);
console.log(calculator.getResult()); // 输出: 7
calculator.clear();
console.log(calculator.getResult()); // 输出: 0

这段代码定义了一个名为Calculator的JavaScript类,用于执行基本的数学运算并追踪结果。以下是代码的详细解析:

Calculator 类定义

 

javascript

class Calculator { constructor() { this.result = 0; } // ... }

  • 构造函数 (constructor): 当使用new关键字创建Calculator类的实例时,构造函数会被自动调用。这里它初始化了一个名为result的属性,并将其值设为0,用于存储计算结果。

方法定义

  • add(number): 接受一个数字参数number,并将它加到当前的result上。

  • subtract(number): 接受一个数字参数number,并从当前的result中减去它。

  • multiply(number): 接受一个数字参数number,并将当前的result乘以它。

  • divide(number): 接受一个数字参数number,并将当前的result除以它。

  • clear(): 将result重置为0,清空计算结果。

  • getResult(): 返回当前的result值,即计算的结果。

实例化与操作

 

javascript

const calculator = new Calculator();

  • 创建了一个Calculator类的实例,并将其赋值给变量calculator

接下来的一系列操作展示了如何使用这个计算器实例:

 

javascript

calculator.add(5); calculator.multiply(2); calculator.subtract(3);

  1. 添加5result变为5(初始为0)。
  2. 乘以2result变为10(当前为5)。
  3. 减去3result变为7(当前为10)。
 

javascript

console.log(calculator.getResult()); // 输出: 7

  • 打印当前的计算结果,即7。
 

javascript

calculator.clear(); console.log(calculator.getResult()); // 输出: 0

  • 调用clear方法清空结果,然后再次打印结果,显示为0。

综上所述,这段代码展示了如何定义一个简单的计算器类,以及如何使用这个类的实例进行数学运算并管理计算结果。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/25893.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

情景题之小明的Linux实习之旅:linux实战练习1(上)【基础命令,权限修改,日志查询,进程管理...】

小明的Linux实习之旅:基础指令练习情景练习题 背景介绍场景1:初识Linux,创建目录和文件场景2:权限管理,小明的权限困惑场景3:打包与解压,小明的备份操作场景4:使用Grep,…

代码随想录算法训练营第三十一天| 455.分发饼干,376. 摆动序列 ,53. 最大子序和

455. 分发饼干 - 力扣&#xff08;LeetCode&#xff09; class Solution {public int findContentChildren(int[] g, int[] s) {Arrays.sort(g); //递增Arrays.sort(s); int result 0;//遍历&#xff0c;先满足小的int i0,j0;for(;i<g.length && j<s.length;i){…

视觉大模型(VLLM)学习笔记

视觉多模态大模型&#xff08;VLLM&#xff09; InternVL 1.5 近日&#xff0c;上海人工智能实验室 OpenGVLab 团队、清华大学、商汤科技合作推出了开源多模态大语言模型项目InternVL 1.5&#xff0c;它不仅挑战了商业模型巨头例如 GPT-4V 的霸主地位&#xff0c;还让我们不禁…

Python3 笔记:字符串的 zfill() 和 rjust()

1、zfill() 方法返回指定长度的字符串&#xff0c;原字符串右对齐&#xff0c;前面填充0。 语法&#xff1a;str.zfill(width) width &#xff1a;指定字符串的长度。原字符串右对齐&#xff0c;前面填充0。 str1 2546 str2 2 print(str1.zfill(10)) # 运行结果&#xff1…

golang基础

Go安装及配置环境 下载最新的 zip 文件: go#.#.#.windows-amd64.zip &#xff0c;这里的 #.#.# 是 Go 的最新版本号。 解压缩 go#.#.#.windows-amd64.zip 文件到你选择的位置。比如D:\Go 在系统中设置两个环境变量&#xff1a;GOROOT和GOPATH GOPATH 指向的是你的工作目录。…

树莓派4B 零起点(三) 树莓派 VNC 远程桌面配置(2) 配置X11模式

目录 一、配置 VNC Server为X11 1、关闭已启动的VNC Server (如之前未开启&#xff0c;此步可以忽略) 2、切换 VNC Server的模式为 X11 二、开启 X11 VncServer 三、修改树莓派VNC Server的连接模式 1、切换到 root 账号 2、修改VNC Server X11的配置 3、设置VNC密码…

引人入胜的教育视频

对于一家专注于数字自动化和能源管理的跨国公司&#xff0c;我们制作了引人入胜的教育视频&#xff0c;帮助房主选择适合他们需求的电气产品。我们的团队审查并定稿文本&#xff0c;录制并编辑配音&#xff0c;选择背景音乐&#xff0c;设计图形&#xff0c;并制作了演示如何安…

MYSQL基础_02_MySQL环境搭建

第02章_MySQL环境搭建 1. MySQL的卸载 步骤1&#xff1a;停止MySQL服务 在卸载之前&#xff0c;先停止MySQL8.0的服务。按键盘上的“Ctrl Alt Delete”组合键&#xff0c;打开“任务管理器”对话框&#xff0c;可以在“服务”列表找到“MySQL8.0”的服务&#xff0c;如果现…

Android RadioButton+GridLayout实现多行多列的单选效果

记录下实现过程,因为最近项目里要用到。我们都知道默认的RadioGroup+RadioButton是不能实现轻松换行的。如果每行使用一个RadioGroup来包裹RadioButton的话。其中的选择监听是个非常麻烦的事情。那么今天记录下RadioButton+GridLayout。 首先xml布局中添加一个GridLayout控件…

【设计模式】基本名词

主流的编程风格 主流的编程方式/编程风格有三种&#xff1a; 面向过程面向对象函数式编程&#xff1a; 将电脑运算视为函数运算&#xff0c;并且避免使用程序状态以及易变对象。具体请看&#xff1a;深入理解函数式编程 面向对象是其中最主流的编程风格&#xff0c;得益于其…

Springboot校园美食推荐系统的开发-计算机毕业设计源码44555

摘要 随着人们生活水平的提高&#xff0c;人们对美食的要求也越来越高&#xff0c;对各类美食信息需求越来越大。因此&#xff0c;结合计算机快速发展、普及&#xff0c;在此基础上制作一个页面简单、美观,功能实用的校园美食推荐系统势在必行&#xff0c;满足用户分享美食的需…

前端nvm的安装和使用nodejs多版本管理2024

nvm的安装和使用 1、简介 nvm是一个管理nodejs版本的工具。在实际的开发中&#xff0c;项目的开发依赖需要的nodejs版本运行环境不同&#xff0c;此时我们就需要使用nvm来进行不同nodejs版本的切换。其实就是一个方便的node版本管理工具。 注意&#xff1a;如果有安装过node&a…

nw.js 如何调用activeX控件 (控件是C++编写的dll文件)

&#x1f3c6;本文收录于「Bug调优」专栏&#xff0c;主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案&#xff0c;希望能够助你一臂之力&#xff0c;帮你早日登顶实现财富自由&#x1f680;&#xff1b;同时&#xff0c;欢迎大家关注&&收藏&&…

第1章Hello world 4/5:对比Rust/Java/C++创建和运行Hello world全过程:运行第一个程序

讲动人的故事,写懂人的代码 1.7 对比Rust/Java/C++创建和运行Hello world全过程 有了会听懂人类的讲话,还能做记录的编程助理艾极思,他们三人的讨论内容,都可以变成一份详细的会议纪要啦。 接下来,我们一起看看艾极思是如何记录下赵可菲创建和运行Java程序Hello world,…

本地搭建支持语音和文本的中英文翻译服务-含全部源代码

实现目标 1、支持文本中英文互译&#xff1b; 2、支持中文语音输入&#xff1b; 3、支持英文语言输入&#xff1b; 进阶&#xff08;未实现&#xff09; 4、优化web界面&#xff1b; 5、优化语音输入js实现逻辑&#xff1b; 6、增加语音输入自纠错模型&#xff0c;纠正语音识别…

服务架构模式演化

一、分布式和集群 在介绍分布式架构之前&#xff0c;先说一下单体架构&#xff0c;顾名思义&#xff0c;所谓单体架构&#xff0c;就是只有一台服务器&#xff0c;这台服务器负责所有的工作。 但是一台主机硬件资源是有上限的&#xff08;CPU、内存、硬盘、网络……&#xff…

代码随想录算法训练营第三十二天| 122.买卖股票的最佳时机II,55. 跳跃游戏 ,45.跳跃游戏II

122. 买卖股票的最佳时机 II - 力扣&#xff08;LeetCode&#xff09; class Solution {public int maxProfit(int[] prices) {if(prices.length 0){return 0;}int min prices[0];int result 0;for(int i1;i<prices.length;i){if(prices[i] > min){result (prices[i]…

“双一流名校”苏州大学计算机专业好考吗?苏州大学计算机考研考情分析

苏州大学&#xff08;Soochow University&#xff09;&#xff0c;简称“苏大”&#xff0c;坐落于历史文化名城苏州&#xff0c;国家“211工程”重点建设高校&#xff0c;国家国防科技工业局和江苏省人民政府共建高校&#xff0c;国家“双一流”世界一流学科建设高校&#xff…

wooyun_2015_110216-Elasticsearch-vulfocus

1.原理 ElasticSearch具有备份数据的功能&#xff0c;用户可以传入一个路径&#xff0c;让其将数据备份到该路径下&#xff0c;且文件名和后缀都可控。 所以&#xff0c;如果同文件系统下还跑着其他服务&#xff0c;如Tomcat、PHP等&#xff0c;我们可以利用ElasticSearch的备…