当前位置: 首页 > news >正文

【温故而知新】JavaScript类、类继承、静态方法

文章目录

  • 前言
  • 一、类
  • 二、类继承
  • 三、静态方法
  • 四、热门文章

前言

JavaScript是一种广泛使用的编程语言,主要用于Web开发。它是一种脚本语言,这意味着它不需要像编译语言那样预先编译,而是在运行时解释和执行。JavaScript可以直接在浏览器中运行,这使得它在前端开发中特别重要,可以用于动态生成和更改网页内容、响应用户交互、发送和接收数据等。

JavaScript的主要特点包括:

  1. 动态类型:变量可以在运行时更改其数据类型。
  2. 面向对象:JavaScript是一种面向对象的编程语言,支持类和继承。
  3. 异步编程:JavaScript支持异步编程,这使得它可以处理如用户交互和网络请求等异步事件。
  4. 浏览器兼容性:大多数现代浏览器都支持JavaScript。

一、类

JavaScript中的类(Class)是一种用于创建对象的蓝图。类定义了对象的属性和行为,可以实例化多个对象,并且对象之间可以共享类定义的属性和方法。下面是一个简单的JavaScript类的概念和案例代码:

类定义语法:

class ClassName {constructor(parameter1, parameter2, ...) {// 构造函数,用于初始化对象的属性this.property1 = parameter1;this.property2 = parameter2;// ...}method1() {// 方法1// 可以使用this关键字来访问对象的属性}method2() {// 方法2}//...
}

案例代码:

class Person {constructor(name, age) {this.name = name;this.age = age;}sayHello() {console.log("Hello, my name is " + this.name);}getAge() {return this.age;}setAge(newAge) {this.age = newAge;}
}// 创建一个Person对象
let person1 = new Person("John", 25);// 调用对象的方法
person1.sayHello(); // 输出 "Hello, my name is John"// 访问对象的属性
console.log(person1.name); // 输出 "John"// 调用对象的方法
console.log(person1.getAge()); // 输出 25// 修改对象的属性
person1.setAge(30);
console.log(person1.getAge()); // 输出 30

注意:JavaScript中的类是引用类型。因此,如果将一个对象赋值给另一个变量,实际上只是将对象的引用赋值给了新的变量,而不是创建了一个新的对象。修改其中一个对象的属性,会影响到其他引用该对象的变量。

二、类继承

JavaScript中的类继承是一种允许一个类继承另一个类的属性和方法的机制。子类继承了父类的所有属性和方法,并且可以在子类中添加新的属性和方法或对父类的方法进行重写。下面是一个简单的JavaScript类继承的概念和案例代码:

类继承语法:

class ChildClass extends ParentClass {constructor(parameter1, parameter2, ...) {super(parameter1, parameter2, ...);// 子类必须在constructor中调用super()方法来调用父类的构造函数// 这样子类才能继承父类的属性和方法// 可以在constructor中初始化子类独有的属性}// 子类可以添加自己的方法childMethod() {// ...}// 子类可以重写父类的方法parentMethod() {super.parentMethod(); // 使用super调用父类的方法// ...}// ...
}

案例代码:

class Animal {constructor(name) {this.name = name;}eat() {console.log(this.name + " is eating.");}
}class Dog extends Animal {constructor(name, breed) {super(name);this.breed = breed;}bark() {console.log(this.name + " is barking.");}
}// 创建一个Dog对象
let dog1 = new Dog("Max", "Labrador");// 调用父类的方法
dog1.eat(); // 输出 "Max is eating."// 调用子类自己的方法
dog1.bark(); // 输出 "Max is barking."// 子类继承了父类的属性
console.log(dog1.name); // 输出 "Max"// 子类可以添加自己的属性
console.log(dog1.breed); // 输出 "Labrador"

在上面的例子中,Dog类继承了Animal类的属性和方法。Dog类通过调用super(name)来调用父类的构造函数,以便继承父类的name属性。Dog类还添加了自己的属性breed和方法bark。通过创建Dog对象,我们可以调用父类的eat方法和子类的bark方法,并访问到继承的属性name和新增的属性breed。

三、静态方法

JavaScript静态方法是定义在类本身上而不是实例上的方法。静态方法可以直接通过类调用,而不需要创建类的实例。静态方法通常用于执行与类相关的操作或实现工具函数,而不是对类的实例进行操作。下面是一个简单的JavaScript静态方法的概念和案例代码:

静态方法语法:

class ClassName {static staticMethod(parameter1, parameter2, ...) {// 执行静态方法的代码}
}// 调用静态方法
ClassName.staticMethod(parameter1, parameter2, ...);

案例代码:

class MathUtils {static add(a, b) {return a + b;}static subtract(a, b) {return a - b;}
}// 调用静态方法
let result1 = MathUtils.add(5, 3); // 8
let result2 = MathUtils.subtract(5, 3); // 2
console.log(result1);
console.log(result2);

在上面的例子中,MathUtils类定义了两个静态方法add和subtract。可以直接通过类名调用这些静态方法,而不需要创建MathUtils类的实例。调用静态方法时,参数被传递给方法,并且该方法返回一个结果。在这个例子中,我们通过调用MathUtils类的add和subtract方法,将两个数相加和相减,并将结果打印到控制台上。

需要注意的是,静态方法不能访问实例的属性或方法,因为它们不是类的实例方法,而是与类本身相关的方法。静态方法通常用于执行一些与类相关的操作,而不是操作实例。

四、热门文章

【温故而知新】JavaScript数字精度丢失问题
【温故而知新】JavaScript的继承方式有那些
【温故而知新】JavaScript中内存泄露有那几种
【温故而知新】JavaScript函数式编程
【温故而知新】JavaScript的防抖与节流
【温故而知新】JavaScript事件循环

相关文章:

【温故而知新】JavaScript类、类继承、静态方法

文章目录 前言一、类二、类继承三、静态方法四、热门文章 前言 JavaScript是一种广泛使用的编程语言,主要用于Web开发。它是一种脚本语言,这意味着它不需要像编译语言那样预先编译,而是在运行时解释和执行。JavaScript可以直接在浏览器中运行…...

小黑艰难的前端啃bug之路:内联元素之间的间隙问题

今天开始学习前端项目&#xff0c;遇到了一个Bug调了好久&#xff0c;即使margin为0&#xff0c;但还是有空格。 小黑整理&#xff0c;用四种方法解决了空白问题 <!DOCTYPE html> <html><head><meta charset"utf-8"><title></tit…...

Ubuntu 申请 SSL证书并搭建邮件服务器

文章目录 Log 一、域名连接到泰坦&#xff08;Titan&#xff09;电子邮件二、NameSilo Hosting 避坑三、Ubuntu 搭建邮件服务器1. 环境准备2. 域名配置3. 配置 Postfix 和 Dovecot① 安装 Nginx② 安装 Tomcat③ 申请 SSL 证书&#xff08;Lets Encrypt&#xff09;④ 配置 pos…...

视频监控方案设计:EasyCVR视频智能监管系统方案技术特点与应用

随着科技的发展&#xff0c;视频监控平台在各个领域的应用越来越广泛。然而&#xff0c;当前的视频监控平台仍存在一些问题&#xff0c;如视频质量不高、监控范围有限、智能化程度不够等。这些问题不仅影响了监控效果&#xff0c;也制约了视频监控平台的发展。 为了解决这些问…...

pyspark.sql.types 中的类型有哪些

对 pyspark.sql.types 中的类型做个记录 1、首先正常使用的时候&#xff0c;我们需要引用他们&#xff1a; from pyspark.sql.types import MapType,StringType # 或者 from pyspark.sql.types import *PySpark SQL TYPES是PySpark模型中的一个类&#xff0c;用于定义PySpark数…...

开源CRM客户管理系统-FeelCRM

FeelCRM客户管理系统 开源项目介绍 FeelCRM客户管理系统&#xff0c;符合中小企业业务流程&#xff1b;支持线索管理、客户管理、商机管理、合同管理、审核管理等多个模块&#xff1b;希望能为广大中小企业以及开发者们提供一个更多的可能性&#xff1b;本版本是我公司跨语言…...

Linux创建新分区挂载后普通用户没有读写权限

Linux创建新分区挂载后普通用户没有读写权限 为了使用更大的空间&#xff0c;楼主按照 ubuntu 16.04 硬盘分区&#xff0c;挂载&#xff0c;硬盘分区方案 这个教程新建硬盘分区给普通用户挂载后&#xff0c;发现普通用户没有权限对挂载的文件夹进行读写。 导致无论是创建文…...

清越 peropure·AI 国内版ChatGP新功能介绍

当OpenAI发布ChatGPT的时候,没有人会意识到,新一代人工智能浪潮将给人类社会带来一场眩晕式变革。其中以ChatGPT为代表的AIGC技术加速成为AI领域的热门发展方向,推动着AI时代的前行发展。面对技术浪潮,清越科技(PeroPure)立足多样化生活场景、精准把握用户实际需求,持续精确Fin…...

力扣1027. 最长等差数列

动态规划 思路&#xff1a; 可以参考力扣1218. 最长定差子序列目前不清楚公差&#xff0c;可以将序列最大最小值找到&#xff0c;公差的范围是 [-(max - min), (max - min)]&#xff0c;按公差递增迭代遍历求出最长等差数列&#xff1b; class Solution { public:int longest…...

GraphicsMagick 的 OpenCL 开发记录(二十三)

文章目录 ImageMagick和GraphicsMagick函数及宏对照表 <2022-04-14 周四> ImageMagick和GraphicsMagick函数及宏对照表 在开发过程中收集了这两个项目中的一些相同或相似功能的函数或者宏定义&#xff0c;希望对大家有所帮助&#xff0c;如下&#xff1a; TypeImageMa…...

通过Android Logcat分析firebase崩溃

参考&#xff1a;UnityIL2CPP包Crash闪退利用Android Logcat还原符号表堆栈日志 - 简书 一、安装Android Logcat插件 1、新建空白unity工程&#xff0c;打开PackageManager窗口&#xff0c;菜单栏Window/PackageManager 2、PackageManager中安装Android Logcat日志工具 3、安…...

【AI大模型】WikiChat超越GPT-4:在模拟对话中事实准确率提升55%终极秘密

WikiChat&#xff0c;这个名字仿佛蕴含了无尽的智慧和奥秘。它不仅是一个基于人工智能和自然语言处理技术的聊天机器人&#xff0c;更是一个能够与用户进行深度交流的智能伙伴。它的五个突出特点&#xff1a;高度准确、减少幻觉、对话性强、适应性强和高效性能&#xff0c;使得…...

【C语言刷题系列】水仙花数的打印及进阶

1.水仙花数问题 水仙花数&#xff08;Narcissistic number&#xff09;也被称为超完全数字不变数&#xff08;pluperfect digital invariant, PPDI&#xff09;、自恋数、自幂数、阿姆斯壮数或阿姆斯特朗数&#xff08;Armstrong number&#xff09; 水仙花数是指一个 3 位数&a…...

ICSpector:一款功能强大的微软开源工业PLC安全取证框架

关于ICSpector ICSpector是一款功能强大的开源工业PLC安全取证框架&#xff0c;该工具由微软的研究人员负责开发和维护&#xff0c;可以帮助广大研究人员轻松分析工业PLC元数据和项目文件。 ICSpector提供了方便的方式来扫描PLC并识别ICS环境中的可疑痕迹&#xff0c;可以用于…...

HCIA——29HTTP、万维网、HTML、PPP、ICMP;万维网的工作过程;HTTP 的特点HTTP 的报文结构的选择、解答

学习目标&#xff1a; 计算机网络 1.掌握计算机网络的基本概念、基本原理和基本方法。 2.掌握计算机网络的体系结构和典型网络协议&#xff0c;了解典型网络设备的组成和特点&#xff0c;理解典型网络设备的工作原理。 3.能够运用计算机网络的基本概念、基本原理和基本方法进行…...

面试经典题---3.无重复字符的最长子串

3.无重复字符的最长子串 我的解法&#xff1a; 滑动窗口&#xff1a; 维护一个[left, right)的滑动窗口&#xff0c;其中[left, right - 1]都是不重复子串&#xff1b;每轮while循环都计算一个滑动窗口的无重复子串长度len&#xff0c;每轮也让right后移一步&#xff1b; 内部…...

使用Robot Framework实现多平台自动化测试

基于Robot Framework、Jenkins、Appium、Selenium、Requests、AutoIt等开源框架和技术&#xff0c;成功打造了通用自动化测试持续集成管理平台&#xff08;以下简称“平台”&#xff09;&#xff0c;显著提高了测试质量和测试用例的执行效率。 01、设计目标 平台通用且支持不…...

Java基础进阶02-xml

目录 一、XML&#xff08;可拓展标记语言&#xff09; 1.学习网站&#xff1a; 2.作用 3.XML标签 4.XML语法 5.解析XML &#xff08;1&#xff09;常见解析思想DOM 6.常见的解析工具 7.DOM4j的使用 8.文档约束 &#xff08;1&#xff09;概述 &#xff08;2&#xf…...

《开始使用PyQT》 第01章 PyQT入门 03 用户界面介绍

03 用户界面介绍 《开始使用PyQT》 第01章 PyQT入门 03 用户界面介绍 The user interface (UI) has become a key part of our everyday lives, becoming the intermediary between us and our ever-growing number of machines. A UI is designed to facilitate in human-co…...

HTML-列表

列表 abbr&#xff1a; li : list item ol : orderd list ul : unordered list dl : definition list dt : definition title dd : definition description 1.有序列表(order list) 概念&#xff1a;有顺序或侧重顺序的列表 <h2>要把大象放冰箱总共分几步</h2> &…...

JavaScript 中的 ES|QL:利用 Apache Arrow 工具

作者&#xff1a;来自 Elastic Jeffrey Rengifo 学习如何将 ES|QL 与 JavaScript 的 Apache Arrow 客户端工具一起使用。 想获得 Elastic 认证吗&#xff1f;了解下一期 Elasticsearch Engineer 培训的时间吧&#xff01; Elasticsearch 拥有众多新功能&#xff0c;助你为自己…...

从零实现富文本编辑器#5-编辑器选区模型的状态结构表达

先前我们总结了浏览器选区模型的交互策略&#xff0c;并且实现了基本的选区操作&#xff0c;还调研了自绘选区的实现。那么相对的&#xff0c;我们还需要设计编辑器的选区表达&#xff0c;也可以称为模型选区。编辑器中应用变更时的操作范围&#xff0c;就是以模型选区为基准来…...

Python:操作 Excel 折叠

💖亲爱的技术爱好者们,热烈欢迎来到 Kant2048 的博客!我是 Thomas Kant,很开心能在CSDN上与你们相遇~💖 本博客的精华专栏: 【自动化测试】 【测试经验】 【人工智能】 【Python】 Python 操作 Excel 系列 读取单元格数据按行写入设置行高和列宽自动调整行高和列宽水平…...

基于当前项目通过npm包形式暴露公共组件

1.package.sjon文件配置 其中xh-flowable就是暴露出去的npm包名 2.创建tpyes文件夹&#xff0c;并新增内容 3.创建package文件夹...

Mac软件卸载指南,简单易懂!

刚和Adobe分手&#xff0c;它却总在Library里给你写"回忆录"&#xff1f;卸载的Final Cut Pro像电子幽灵般阴魂不散&#xff1f;总是会有残留文件&#xff0c;别慌&#xff01;这份Mac软件卸载指南&#xff0c;将用最硬核的方式教你"数字分手术"&#xff0…...

【C++从零实现Json-Rpc框架】第六弹 —— 服务端模块划分

一、项目背景回顾 前五弹完成了Json-Rpc协议解析、请求处理、客户端调用等基础模块搭建。 本弹重点聚焦于服务端的模块划分与架构设计&#xff0c;提升代码结构的可维护性与扩展性。 二、服务端模块设计目标 高内聚低耦合&#xff1a;各模块职责清晰&#xff0c;便于独立开发…...

Docker 本地安装 mysql 数据库

Docker: Accelerated Container Application Development 下载对应操作系统版本的 docker &#xff1b;并安装。 基础操作不再赘述。 打开 macOS 终端&#xff0c;开始 docker 安装mysql之旅 第一步 docker search mysql 》〉docker search mysql NAME DE…...

[大语言模型]在个人电脑上部署ollama 并进行管理,最后配置AI程序开发助手.

ollama官网: 下载 https://ollama.com/ 安装 查看可以使用的模型 https://ollama.com/search 例如 https://ollama.com/library/deepseek-r1/tags # deepseek-r1:7bollama pull deepseek-r1:7b改token数量为409622 16384 ollama命令说明 ollama serve #&#xff1a…...

基于江科大stm32屏幕驱动,实现OLED多级菜单(动画效果),结构体链表实现(独创源码)

引言 在嵌入式系统中&#xff0c;用户界面的设计往往直接影响到用户体验。本文将以STM32微控制器和OLED显示屏为例&#xff0c;介绍如何实现一个多级菜单系统。该系统支持用户通过按键导航菜单&#xff0c;执行相应操作&#xff0c;并提供平滑的滚动动画效果。 本文设计了一个…...

算法刷题-回溯

今天给大家分享的还是一道关于dfs回溯的问题&#xff0c;对于这类问题大家还是要多刷和总结&#xff0c;总体难度还是偏大。 对于回溯问题有几个关键点&#xff1a; 1.首先对于这类回溯可以节点可以随机选择的问题&#xff0c;要做mian函数中循环调用dfs&#xff08;i&#x…...