【H2O2|全栈】JS进阶知识(三)jQuery(3)

目录

前言

开篇语

准备工作

$ 拷贝

浅拷贝和深拷贝

节点拷贝

$ 正则表达式

概念

创建

正则校验

匹配条件

边界符

范围匹配

量词

值类型

字符串正则匹配替换

$ 遍历

结束语


前言

开篇语

本系列博客主要分享JavaScript的进阶语法知识,本期为第三期,主要分享的内容为:jQuery拷贝、正则表达式和遍历。

从进阶部分开始,我们将脱离原生的JS,使用一些包装的第三方库来完成我们的需求。这些JS库需要在文档的开头引入,暂时的引入格式为script标签加src地址。

与基础部分的语法相比,进阶部分的语法会有较大的差别,注意最好不要混用原生方法与第三方库内容,以免出现不必要的麻烦。

准备工作

软件:【参考版本】Visual Studio Code

插件(扩展包):Open in browser, Live Preview, Live Server, Tencent Cloud AI Code Assistant, htmltagwrap

提示:在不熟练的阶段建议关闭AI助手

第三方JS库:jquery.min.js

提示:请站内搜索下载、引入方式

浏览器版本:Chrome

系统版本: Win10/11/其他非Windows版本

$ 拷贝

浅拷贝和深拷贝

根据变量类型的不同,复制变量通常有两种方式—— 浅拷贝深拷贝

就浅拷贝而言,它的形式上类似下面这样——

var a = 'aaa'

var b = a

它只能复制栈内存中的内容,于是在复制时会出现下面两种状况——

  • 对于字面量类型的数据,由于它只存储在栈内存中,所以直接复制本身
  • 而对于引用类型的数据,栈内存里只存储堆内存中实际存储数据的地址,所以实质上是地址被复制了,两个变量实际上还是在对同一组数据进行操作

如果想要真正复制引用类型的数据,则需要使用深拷贝,即将堆内存中的数据复制一份,存到新的地址中。

$提供的深拷贝方法形式如下——

$.extend(true, targetObj, obj)

可以实现把obj复制一份新的数据,存储到targetObj中。该方法需要使用最高级节点$调用。 

节点拷贝

$提供了将元素节点拷贝的方法clone(),又叫节点克隆。该方法直接返回复制之后的新节点。

如果不填参数,则只复制元素节点,不复制该节点绑定的事件。

填写参数true,则新的节点还可以具有原节点绑定事件。 

$ 正则表达式

概念

正则表达式是一种用于匹配和操作文本的强大工具,它是由一系列字符和特殊字符组成的模式,用于描述要匹配的文本模式。

正则表达式可以在文本中查找、替换、提取和验证特定的模式。

创建

创建正则表达式有两种方式——使用 RegExp 对象的构造函数创建和通过字面量创建。

调用构造函数创建正则表达式示例——

var reg1 = new RegExp (/xxx/)

var reg2 = RegExp(/xxx/)

使用字面量创建示例——

var reg3 = /xxx/ 

其中xxx代表正则匹配条件。

正则校验

当我们拿到正则表达式之后,我们就可以对指定的字符串进行正则校验,如果符合正则表达式的条件,则返回true。

正则校验的格式如下——

正则表达式.test('待校验字符串')

注意,正则校验是区分大小写的。 

匹配条件

边界符

表达式作用
/abc/包含abc的字符串可通过
/^abc/以abc开头的字符串可通过
/abc$/以abc结尾的字符串可通过
/^abc$/只能匹配字符串abc

范围匹配

[] 表示有一系列字符可供选择,只要匹配[]里的任意一个字符即可。

表达式作用
/[abc]/包含a, b, c中的任意字符即可通过
/^[abc]/首字母为a, b, c中的任意字符即可通过
/[a-z]/包含a到z中的任意字符即可通过
/^[a-z]$/包含a到z中的任意字符即可通过,但是只能匹配一个

^[a-zA-Z0-9]$

包含大小写、数字中的任意字符即可通过,但是只能匹配一个

量词

量词符用来设定某个模式出现的次数,简单来说就是指定条件重复出现多少次。

表达式作用

/^a*$/

字符a重复0次或多次
/^a+$/字符a重复1次或多次
/^a?$/字符a重复0次或1次
/^a{num}$/字符a重复num次

/^a{num,}$/

字符a重复num次即以上
/^a{start, end}$/字符a重复[start, end]次

值类型

我们还可以用值类型来判断字符是否为某一类字符。

值类型作用
\d判断是否为十进制数字
\D判断非数字
\w判断是否为十进制数字、大小写字母或下划线
\W判断除\w之外的字符
\s判断空白字符(空格,tab,换页符等)
\S判断非空白字符

字符串正则匹配替换

replace() 方法用于把字符串中正则匹配通过的字符串替换为目标字符串。

使用方式如下——

原字符串.replace(正则表达式, 替换字符串)

$ 遍历

之前我们知道,对一个元素进行遍历,有三种方式——for-i,for-in,for-of。

比如,我们对一个数组元素arr进行遍历,可以这么做——

for (var i = 0; i < arr.length; i++) { } // i为索引

for (var i in arr) { } // i为索引

for (var item of arr) { } // item为元素

现在,$也提供了一种遍历方法each(),该方法由最高级节点$调用。 

采用该方式遍历数组,类似下面的格式——

$.each(arr, function(i, item) { })

其中i为索引,item为元素。

当然,该方式也可以用于遍历对象,类似下面的格式——

$.each(obj, function(key, value) { }) 

其中key为属性,value为值。 

结束语

本期内容到此结束。关于本系列的其他博客,可以查看我的JS进阶专栏。

在全栈领域,博主也只不过是一个普通的萌新而已。本系列的博客主要是记录一下自己学习的一些经历,然后把自己领悟到的一些东西总结一下,分享给大家。

文章全篇的操作过程都是笔者亲自操作完成的,一些定义性的文字加入了笔者自己的很多理解在里面,所以仅供参考。如果有说的不对的地方,还请谅解。

==期待与你在下一期博客中再次相遇==

——临期的【H2O2】

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

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

相关文章

GenAI 生态系统现状:不止大语言模型和向量数据库

自 20 个月前 ChatGPT 革命性的推出以来&#xff0c;生成式人工智能&#xff08;GenAI&#xff09;领域经历了显著的发展和创新。最初&#xff0c;大语言模型&#xff08;LLMs&#xff09;和向量数据库吸引了最多的关注。然而&#xff0c;GenAI 生态系统远不止这两个部分&#…

HTML、JavaScript和CSS实现注册页面设计

目录 一、实现要求 二、实现页面图 1、注册页面 2.用户ID、用户名、口令验证成功后显示页面 三、用户ID、用户名、口令、确定口令验证逻辑js代码 1、验证用户ID 2、验证用户名 3、验证口令密码 四、总结 五、代码仓库 一、实现要求 综合使用HTML、JavaScript和CSS进…

Vue前端开发:事件绑定方式

事件定义 在Vue中&#xff0c;当一个元素通过使用v-on或语法糖指令绑定某个事件后&#xff0c;则完成了事件被定义的过程&#xff0c;在这定义的过程中&#xff0c;指令的后面是定义事件的名称&#xff0c;等号的后面是事件被触发后执行的函数&#xff0c;当然&#xff0c;也可…

mac-ubuntu虚拟机(扩容-共享-vmtools)

一、磁盘扩容 使用GParted工具对Linux磁盘空间进行扩展 https://blog.csdn.net/Time_Waxk/article/details/105675468 经过上面的方式后还不够&#xff0c;需要再进行下面的操作 lvextend 用于扩展逻辑卷的大小&#xff0c;-l 选项允许指定大小。resize2fs 用于调整文件系统的…

【AAOS】【源码分析】CarSystemUI

目录 目录 概述 CarSystemUI组件 源代码 源码位置 主要模块 编译选项 CarSystemUI与SystemUI 编译方式 Car Emulator默认服务 CarSystemUI 启动流程 缩略词 概述 AAOS中的SystemUI虽然相较手机要简单不少,但却是车载开发中的一个重要组件,它负责管理和控制车机…

C++知识点复习

对于这些问题的回答&#xff0c;可以按照思维导图的结构来组织答案&#xff0c;然后再进行回答。 C11用过哪些特性&#xff1f; &#xff08;首先&#xff0c;要回答好这个问题&#xff0c;需要注意问题的层次&#xff0c;不要一上来就说新增了某某关键字和语法&#xff0c;在…

.net framework 3.5sp1开启错误进度条不动如何解决

浏览器地址栏输入www.dnz9.com远程解决netframework问题 在Windows操作系统上安装或启用.NET Framework 3.5 SP1时&#xff0c;如果遇到进度条不动的问题&#xff0c;可能由多种原因引起。以下是一些可能的解决方案&#xff1a; 1. 使用Windows功能对话框 1.打开“控制面板”。…

openpnp - 在openpnp中单独测试相机

文章目录 openpnp - 在openpnp中单独测试相机概述笔记END openpnp - 在openpnp中单独测试相机 概述 底部相机的位置不合适, 重新做了零件&#xff0c;准备先确定一下相机和吸嘴的距离是多少才合适。 如果在设备上直接实验&#xff0c;那么拆装调整相机挺麻烦的。 准备直接在电…

Spring 框架中常见的注解(Spring、SpringMVC、SpringBoot)

1. Spring 中常见注解 还有Recourse&#xff1a;相当于AutowiredQualifier Value : 用于将配置文件中的值注入到Bean的字段中。 Bean : 用于在配置类中声明一个Bean。 Lazy : 用于延迟加载Bean。 2. SpringMVC 中常见注解 还有GetMapping PostMapping PutMapping DeleteMapp…

掌握分布式系统的38个核心概念

天天说分布式分布式&#xff0c;那么我们是否知道什么是分布式&#xff0c;分布式会遇到什么问题&#xff0c;有哪些理论支撑&#xff0c;有哪些经典的应对方案&#xff0c;业界是如何设计并保证分布式系统的高可用呢&#xff1f; 1. 架构设计 这一节将从一些经典的开源系统架…

OpenAI 的 Whisper:盛名之下,其实难副?

OpenAI 的 Whisper&#xff1a;盛名之下&#xff0c;其实难副&#xff1f; Whisper 的崛起与承诺 严重缺陷的曝光 风险分析 应对措施 结论 在人工智能的浪潮中&#xff0c;OpenAI 一直以其创新性和强大的技术实力备受瞩目。然而&#xff0c;最近 OpenAI 的语音转写工具 Wh…

【MySQL】可重复读级别下基于Next Key Lock解决幻读

昨天读到了一篇文章[1]&#xff0c;里面讲&#xff0c;面试官说mysql的可重复读级别下有解决幻读的方式&#xff0c;最后公布了答案&#xff0c;是在sql后面加for update。这么说倒是没错&#xff0c;但是这种问法给我一种奇怪的感觉&#xff0c;因为for update无论在哪个隔离级…

Kaggle “Reducing Commercial Aviation Fatalities” 比赛 生理数据分析

1、背景 Kaggle在2018 年 12 月 20 日举办“Reducing Commercial Aviation Fatalities” 比赛&#xff0c;通过收集飞行员的生理数据&#xff0c;判断飞行员何时会遇到麻烦吗&#xff1f;该比赛主要分析飞行员的问题&#xff0c;因为航班多、时间不固定&#xff0c;飞行员会出…

Python 字符串类型中 ``split(“\n“)`` 与 ``splitlines()`` 方法的一些区别

最近在以 self.__print("#" * 20 "\n") 调用自己写的 __print 接口时发现打印的时候 "\n" 没有打出来&#xff0c;进而发现了 split("\n") 与 splitlines() 方法的一些区别。 一个是参数上&#xff0c;split 需要传递一个字符串作为…

开源库 FloatingActionButton

开源库FloatingActionButton Github:https://github.com/Clans/FloatingActionButton 这个库是在前面这个库android-floating-action-button的基础上修改的&#xff0c;增加了一些更强大和实用的特性。 特性&#xff1a; Android 5.0 以上点击会有水波纹效果 可以选择自定义…

““ 引用类型应用举例

#include <iostream> //使能cin(),cout(); #include <stdlib.h> //使能exit(); #include <iomanip> //使能setbase(),setfill(),setw(),setprecision(),setiosflags()和resetiosflags(); //setbase( char x )是设置输出数字的基数,如输出进制数则用se…

无人机避障——2D栅格地图pgm格式文件路径规划代码详解

代码和测试效果请看上一篇博客&#xff1a; 无人机避障——使用三维PCD点云生成的2D栅格地图PGM做路径规划-CSDN博客 更换模型文件.dae&#xff1a; 部分模型文件可以从这里下载&#xff1a; https://github.com/ethz-asl/rotors_simulator/wiki 将原先代码中的car.dae文件…

科研项目:利用AI大模型获得基金资助的10个原则

我是娜姐 迪娜学姐 &#xff0c;一个SCI医学期刊编辑&#xff0c;探索用AI工具提效论文写作和发表。 以ChatGPT为代表的大语言模型的诞生后&#xff0c;在学术界这些大模型LLM驱动的聊天机器人已经成为大家撰写和修订论文、基金申请书的流行工具。这些LLM经过千亿文本训练&…

CVE-2022-0185

这是一个关于整型溢出的CVE。 static int legacy_parse_param(struct fs_context *fc, struct fs_parameter *param) {struct legacy_fs_context *ctx fc->fs_private; // [1] ctx 与文件描述符相关unsigned int size ctx->data_size; // [2] size —— 目前已经写…