前端小白的学习之路(ES6 三)

提示:类:class, 模块化:modules(基本概念)

目录

一、类class

1.声明类

2.类的继承

3.类的静态成员

4.私有属性

二、模块化(基本)

1.定义组件与引入组件

2.书写方式 

1) 按需导出导入

 2) 全部导出导入

3) 设置模块的别名


一、类class

在 ECMAScript 6 (ES6) 中引入了类(class)的概念,它提供了一种更加简洁和面向对象的语法来定义对象和构造函数。类是一种模板,用于创建具有相同属性和方法的对象。其本质就是面向对象

1.声明类

下面的例子中,Animal 是一个类,它有一个构造函数 constructor 和一个方法 eatfood。构造函数用于初始化对象的属性,而 speak 方法用于输出动物的名称。

一般把属性写在custructor中,把方法直接写在class中。

使用 class 关键字创建类,类的方法之间不需要使用逗号分隔。可以使用 new 关键字来实例化一个类,并调用类中定义的方法。

<!DOCTYPE html>
<html lang="zh-cn"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta http-equiv="X-UA-Compatible" content="ie=edge"><title>基本模板</title><style></style>
</head><body><script>// 声明类class Animal {// 构造函数(固定的)constructor(n) {// 添加属性this.name = n;}// 类内部编写的自定义方法eatFood() {console.log(this.name + "在吃东西!")}}// 创建实例const cat  =  new Animal("猫");console.log(cat);//new Animal("猫").eatFood();new Animal("狗").eatFood();new Animal("羊").eatFood();new Animal("兔子").eatFood();</script>
</body></html>

2.类的继承

ES6 类还支持继承,可以通过 extends 关键字来实现类的继承。super 关键字用于调用父类的构造函数。

<!DOCTYPE html>
<html lang="zh-cn">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta http-equiv="X-UA-Compatible" content="ie=edge"><title>基本模板</title><style></style>
</head>
<body><script>// 面向对象是一种写代码思想// 类  // 父类: 系统  System (版本信息,尺寸,显示版本)// 子类: 应用  App (名称,显示版本,显示名称)// 子类: 页面  Page(时间,显示版本,显示名称)// 代码:// 父类class System {constructor(author){this.version = "v1.0.0";this.author = author;}showVersion(){console.log("当前系统版本:"+this.version);}}// 子类App继承父类System// 利用 extends 继承父类的成员class App extends  System {// 构造函数constructor(author){// 超类方法super(author);//调用父类的构造函数// 添加当前类的属性this.name = "QQ";}// 显示名称showName(){console.log("应用名称:"+this.name);}}// 子类Page继承Appclass Page  extends App {constructor(author){super(author)this.time = "2024-03-22 18:00:00"}}// 创建System实例const system = new  System("zhangsan");console.log(system);//System {version: 'v1.0.0', author: 'zhangsan'}// 创建App的实例const app = new App("zhangsan");// app.showVersion();// 当前系统版本:v1.0.0// app.showName();//应用名称:QQconsole.log(app);// App {version: 'v1.0.0', author: 'zhangsan', name: 'QQ'}// 创建Page的实例const page = new Page("zhangsan");// page.showVersion();// page.showName();console.log(page);// Page {version: 'v1.0.0', author: undefined, name: 'QQ', time: '2024-03-22 18:00:00'}</script>
</body>
</html>

3.类的静态成员

类的静态成员是指与类本身相关联而不是与类的实例相关联的属性和方法。静态成员在类的实例化过程中不会被继承,而是直接通过类本身来访问。通过static设置。

<!DOCTYPE html>
<html lang="zh-cn"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta http-equiv="X-UA-Compatible" content="ie=edge"><title>基本模板</title><style></style>
</head><body><script>// 静态成员不是给类实例使用的,而是直接给类使用class Animal {// 静态属性static name = "狮子动物";// 静态方法static showName() {console.log("这是" + Animal.name);}}// 创建实例const a1 = new Animal()console.log(a1);console.log(a1.name);//undefined// 由类直接引用或使用的属性和方法,叫做静态成员console.dir(Animal)console.dir(Animal.name)Animal.showName()</script>
</body></html>

4.私有属性

 ES6 中引入了私有字段(private fields)的概念,可以使用 # 符号来定义私有属性。私有字段只能在类的内部访问,外部无法访问或修改。这种方式提供了真正意义上的类私有属性。

        

<!DOCTYPE html>
<html lang="zh-cn"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta http-equiv="X-UA-Compatible" content="ie=edge"><title>基本模板</title><style></style>
</head><body><script>// 私有属性这个说法是这样的// 只能在当前类的内部使用的属性class App {// 声明私有属性#color = "红色";showColor() {console.log("这是~~~" + this.#color);}}const app = new App();console.log(app);app.showColor();// console.log(app.color);// undefined// console.log(app.#color);// 报错class Page extends App {constructor() {super();}getColor(){// console.log("我想得到颜色"+this.#color);// 报错}}const page = new Page();// page.showColor();// page.getColor();</script>
</body></html>

二、模块化(基本)

ES6 模块化是 ECMAScript 6 标准中引入的一种模块化系统,它提供了一种简洁且可靠的方式来组织 JavaScript 代码,并支持在不同文件之间共享和重用代码。

在 ES6 模块化中,一个文件就是一个模块,可以通过 export import 关键字来导出和导入模块中的内容。

注意:export 和 import 这俩命令,不能直接在script中使用,往往是在webpack构建的项目工程中使用,目前,可以把script标签的type属性设置为module ,就可以使用export 和 import。

1.定义组件与引入组件

通过export定义组件

// math.jsexport function add(a, b) {return a + b;
}export function subtract(a, b) {return a - b;
}

通过import引入组件

// main.js
<script type="module">     import { add, subtract } from './math.js';console.log(add(5, 3)); // 输出 8console.log(subtract(5, 3)); // 输出 2<script>

2.书写方式 

1) 按需导出导入

模块功能分开书写,通过大括号导入需要的模块功能 

//搜索模块//search.jsexport const search1 = ()=> { } 
export const search2 = ()=> { } 
export const search3 = ()=> { }//项目中导入import { search1 , search2 } from "./modules/search.js"

 2) 全部导出导入

把全部模块功能写在一个对象中,直接引入这个对象,通过.来调用需要的模块功能 

//banner.jsexport default { init (){ } }//项目中导入import Banner from "./modules/banner.js"

3) 设置模块的别名

//导出:// 定义对象 
const comp = {     name: "我是组件" }
// 导出时,设置对象的别名 
export { comp as 自定义名称 }; 
export { comp as aaa };//导入:<script type="module">     // 按需导入 ,使用自定义名称     import { aaa } from './modules/demo.js';     console.log(aaa);//{name: '我是组件'} 
</script>

 

 

 

 

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

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

相关文章

Flink:维表 Join 难点和技术方案汇总

博主历时三年精心创作的《大数据平台架构与原型实现&#xff1a;数据中台建设实战》一书现已由知名IT图书品牌电子工业出版社博文视点出版发行&#xff0c;点击《重磅推荐&#xff1a;建大数据平台太难了&#xff01;给我发个工程原型吧&#xff01;》了解图书详情&#xff0c;…

线性表的顺序表示(顺序表)

静态分配&#xff1a; #include <stdbool.h> #include <stdio.h>typedef int ElementType;#define MaxSize 50 typedef struct {ElementType data[MaxSize];int length; }SqList;//初始化 //SqList L; void InitList(SqList L) {L.length 0; }//插入 bool ListIn…

主机OS/390汇编程序入门篇

主机OS/390 汇编程序曾经风靡一时。它曾应用于很多商业应用系统&#xff0c;特别是联机应用系统。随着高级语言的普及&#xff0c;以及计算机硬件资源的成本日趋下降&#xff0c;汇编语言不再是人们开发的首选&#xff0c;但是汇编语言还是有它的优点&#xff0c;现在仍然有着它…

SQLiteC/C++接口详细介绍sqlite3_stmt类(十二)

返回&#xff1a;SQLite—系列文章目录 上一篇&#xff1a;SQLiteC/C接口详细介绍sqlite3_stmt类&#xff08;十一&#xff09; 下一篇&#xff1a; SQLiteC/C接口详细介绍sqlite3_stmt类&#xff08;十三&#xff09; 48、sqlite3_stmt_isexplain sqlite3_stmt_is…

2024蓝桥杯每日一题(单调队列)

备战2024年蓝桥杯 -- 每日一题 Python大学A组 试题一&#xff1a;单调栈 试题二&#xff1a;滑动窗口 试题三&#xff1a;子矩阵 试题四&#xff1a;最大子序和 试题一&#xff1a;单调栈 【题目描述】 给定一个长度为 N 的整数数列&#xff0c;输出每…

jvm提供的远程调试 简单使用

JVM自带远程调试功能 JVM远程调试&#xff0c;其实是两个虚拟机之间&#xff0c;通过socket通信&#xff0c;达到远程调试的目的&#xff1b; 前提 确保本地和远程的网络是开通的&#xff1b; 本地操作 远程操作 在启动命令参数中 把上面的内容复制进去

【3GPP】【核心网】【4G】4G手机接入过程,手机附着过程(超详细)

1. 4G手机接入过程&#xff0c;手机附着过程 附着&#xff08;Attach&#xff09;&#xff1a; 终端在PLMN中注册&#xff0c;从而建立自己的档案&#xff0c;即终端上下文 进行附着的三种情况&#xff1a; ①终端开机后的附着&#xff0c;初始附着 ②终端从覆盖盲区返回到…

解决用POI库生成的word文件中的表格在python-docx无法解析的问题

问题背景 用apache-poi生成word文件中表格&#xff0c;在使用python-docx库解析时报错&#xff1a; 问题分析 1. word文档本质上是一个rar压缩包&#xff0c;用winrar解析后如下&#xff1a; 2. 查看document.xml&#xff0c;可以看到table元素下面是没有<w:tblGrid>这…

ARPACK-ng安装教程

ARPACK 是一个用于解决大型稀疏或稠密特征值问题的软件包。 arpack-ng是目前方便获得的arpack的替代版本。主页地址为https://github.com/opencollab/arpack-ng 安装方法 Using autotools 使用Autotools&#xff0c;只要输入工程中的目标文件、依赖文件、文件目录等信息&…

Vue3快速上手(十七)Vue3之状态管理Pinia

一、简介 Pinia官网:https://pinia.vuejs.org/zh/ 从官网截图里可以直接看到,pinia是一个vuejs的状态(数据)管理工具。功能性同vuex。logo是小菠萝。它是一个集中式状态管理工具。就是将多个组件共用的数据管理起来,重复利用。有点类似缓存的意思。 二、Pinia环境搭建 …

【LVGL-按钮按钮矩阵部件】

LVGL-按钮&按钮矩阵部件 ■ LVGL-按钮部件■ 按钮部件&#xff1a; 点击三个按钮一个回调函数修改label值。 ■ LVGL-按钮矩阵部件■ 示例一&#xff1a;按钮换行&#xff0c;和宽度设置。■ 示例二&#xff1a;设置按钮宽度为2倍■ 示例三&#xff1a;获取点击的按钮下标&…

大数据主要组件HDFS Iceberg Hadoop spark介绍

HDFSIceberghadoopspark HDFS 面向PB级数据存储的分布式文件系统&#xff0c;可以存储任意类型与格式的数据文件&#xff0c;包括结构化的数据以及非结构化的数据。HDFS将导入的大数据文件切割成小数据块&#xff0c;均匀分布到服务器集群中的各个节点&#xff0c;并且每个数据…

服务器感染了.kat6.l6st6r勒索病毒,如何确保数据文件完整恢复?

导言&#xff1a; 随着信息技术的不断发展&#xff0c;网络安全问题愈发凸显&#xff0c;其中勒索病毒成为了一种常见的网络威胁。近期&#xff0c;一种名为.kat6.l6st6r的勒索病毒引起了广泛关注。该病毒通过加密用户文件并要求支付赎金的方式&#xff0c;给受害者带来了巨大…

Gartner发布网络安全应用生成式AI指南:应用生成增强功能提升企业网络安全能力和效率的三个领域及9个实例

生成增强功能是专门为提高知识工作者的生产力、解决网络安全技能短缺问题并降低大型语言模型带来的风险而构建的。安全和风险管理领导者通过在运营中采用生成增强来提高团队的能力。 主要发现 与其他人工智能实现相比&#xff0c;生成式人工智能 (GenAI)解决方案&#xff0c;特…

CSP认证——202012-1 期末预测之安全指数

题目背景 期末要到了&#xff0c;小菜同学找到了自己的好朋友顿顿&#xff0c;希望可以预测一下自己这学期是否会挂科。 题目描述 首先&#xff0c;顿顿选取了如“课堂表现”、“自习时长”、“作业得分”、“社团活动参与度”等 项指标作为预测的依据。 然后&#xff0c;顿…

绿色节能|AIRIOT智慧建材能耗管理解决方案

建材供应是建筑业不可或缺的一个重要环节&#xff0c;在环保和企业可持续发展的双重需求下&#xff0c;建材生产商对建材生产过程中的能耗掌握和能耗管理尤其关注。但在实际生产和运营过程中&#xff0c;传统的建材能耗管理方式往往存在如下痛点&#xff1a; 用户管理权限不完善…

汽车ECU的虚拟化技术(五) -- 对MCU虚拟化实现难点的思考

目录 1.概述 2.虚拟化软件的难点 2.1 虚拟化中的中断处理 2.2 虚拟ECU的通信 3.小结 1.概述 在上面文章里汽车ECU的虚拟化技术(四) -- 对MCU虚拟化实现难点的思考-CSDN博客&#xff0c;解了OEM面临新的电子电气架构下的集成难点&#xff0c;引入了hypervisor以及VM调度机制…

react中使用google map展示地图

1. 安装插件 google-maps-react npm install google-maps-react --save 2. 使用 import React, { Component } from "react"; import { Map, GoogleApiWrapper, Marker } from "google-maps-react";class MapContainer extends Component {render() {co…

ARM-Linux 开发板下安装编译 OpenCV 和 Dlib

安装 OpenCV 和 Dlib 不像在 x86 平台下那样简单&#xff0c;用一句命令就可以自动安装完。而在 ARM 平台中许多软件都需要自行下载编译&#xff0c;且还有许多问题&#xff0c;本篇文章就是记录在 ARM 平台下载 OpenCV 踩过的坑。 硬件环境&#xff1a; RK3568 Ubuntu20.04…

全国大学生数学建模大赛备赛——相关系数的求解(皮尔逊(pearson)、斯皮尔曼(spearman)、肯德尔(kendall)相关系数)

相关系数是用来衡量两个变量之间线性相关程度的指标。它的取值范围在-1到1之间&#xff0c;当相关系数为1时表示两个变量完全正相关&#xff08;即一个变大另一个也变大&#xff09;&#xff0c;当相关系数为-1时表示两个变量完全负相关&#xff08;即一个变大另一个变小&#…