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

web学习笔记(三十四)

目录

1.面向对象的特征

2.面向对象的继承方式 

3.正则表达式 

3.1如何创建正则表达式

3.2边界符

3.2[ ]方括号 

3.3正则表达式中相关的方法汇总


1.面向对象的特征

  1. 封装性:就像是把东西放在一个密封的盒子里一样,只让外部使用者通过指定的接口来访问盒子里的东西,而不需要知道盒子里具体是怎么实现的。这样做可以保护内部数据,让代码更容易维护和重用。
  2. 继承性:就像家族中的父子关系一样,子对象可以继承父对象的特性。这样可以避免重复编写相似的代码,并且可以对父对象的行为进行修改或扩展。
  3. 多态性:就像一个词可以有多种不同的含义一样,同一个方法可以在不同的对象上产生不同的行为。这样可以让代码更有弹性,适应不同的情况。

2.面向对象的继承方式 

    (1)原型链的方式来实现继承

         子构造函数.prototype=Object.create(父构造函数.prototype);

         子构造函数.prototype.constructor=子构造函数名;

    (2)借用构造函数

         父构造函数.call(this,实参1,实参1,...);

  (3)组合继承

         父构造函数.call(this,实参1,实参1,...);

         子构造函数.prototype=Object.create(父构造函数.prototype);

         子构造函数.prototype.constructor=子构造函数名;

  (4)寄生式组合继承

      在寄生式组合继承中,我们通过借用构造函数来继承属性,并通过原型链的混合形式来继承方法。这样可以避免组合继承中调用两次父类构造函数的问题,提高性能和代码复用性

// 定义父类
function Animal(name) {this.name = name;
}Animal.prototype.sayName = function() {console.log("My name is " + this.name);
};// 定义子类
function Dog(name, breed) {Animal.call(this, name); // 借用构造函数继承属性this.breed = breed;
}// 寄生式继承原型链
function inheritPrototype(subType, superType) {var prototype = Object.create(superType.prototype); // 创建父类原型的副本prototype.constructor = subType; // 修正constructor指向subType.prototype = prototype; // 将子类的原型指向父类的原型副本
}inheritPrototype(Dog, Animal); // 继承Dog.prototype.sayBreed = function() {console.log("I am a " + this.breed);
};// 创建实例
var myDog = new Dog("Buddy", "Golden Retriever");
myDog.sayName(); // 输出:My name is Buddy
myDog.sayBreed(); // 输出:I am a Golden Retriever

  (5)寄生式继承

在寄生式继承中,我们会创建一个用于封装和增强已有对象的函数,然后返回这个新对象。这个函数会向对象添加额外的功能,而不会直接修改原有对象。

// 原始对象
var originalCar = {make: "Toyota",model: "Corolla",year: 2020,displayInfo: function() {console.log(this.year + " " + this.make + " " + this.model);}
};// 寄生式继承的函数
function createNewCar(original) {var newCar = Object.create(original); // 创建原对象的副本// 增强对象:添加新属性newCar.color = "blue";// 增强对象:添加新方法newCar.displayColor = function() {console.log("The color of the car is " + this.color);};return newCar; // 返回增强后的对象
}// 创建新的增强对象
var myCar = createNewCar(originalCar);
myCar.displayInfo(); // 输出:2020 Toyota Corolla
myCar.displayColor(); // 输出:The color of the car is blue

3.正则表达式 

正则表达式就是一种用来匹配字符串中字符组合的模式,正则表达式也是一个对象那个。在JavaScript中主要于在表单验证。在学习过程中我们并不需要记忆大量的正则表达式,只需要记忆大部分字符的含义即可,在后续使用到正则表达式时可以直接进行搜索,然后拿别人写好的来用即可。

3.1如何创建正则表达式

有两种创建正则表达式的方式,推荐使用第二种。修饰符只有三个:i(不区分大小写)g(全局查找)m(多行查找),修饰符是不分顺序的,可以写一个,也可以写多个。

(1)格式:var patt=new  RegExp("规则",'修饰符');

注意:括号内的正则表达式规则和修饰符都需要加上引号,而且在使用到类似于\d的字符时,需要进行转义写为\\d。

(2)格式:字面量创建  var parr=/规则/修饰符

3.2边界符

在正则表达式中,边界符通常用来提示字符所处的位置,大部分情况下我们会将^和$搭配来使用,比较精确。

边界符

说明  

^

表示匹配行首的文本(以谁开始)

$

表示匹配行尾的文本(以谁结束)

3.2[ ]方括号 

方括号内可以写入一个或者多个字符,也可以写入一个区间,然后查找时只需要包括其中一个就返回true。

表达式

描述

[abc]

查找方括号之间的任何字符。(只要包含有a 或者 包含有b 或者包含有c 都返回为true)

[^abc]

查找任何不在方括号之间的字符。(方括号内部加上 ^ 表示取反,只要包含方括号内的字符,都返回 false 。)

^[abc]$查找只包含abc其中一个字母开头并结尾的字符(

三选一 只有是a 或者是 b 或者是c 这三个字母才返回 true

)

[0-9]

查找任何从 0 至 9 的数字。

[a-z]

查找任何从小写 a 到小写 z 的字符。

[A-Z]

查找任何从大写 A 到大写 Z 的字符。

[A-z]

查找任何从大写 A 到小写 z 的字符。

[adgk]

查找给定集合内的任何字符。

[^adgk]

查找给定集合外的任何字符。(方括号内部加上 ^ 表示取反,只要包含方括号内的字符,都返回 false 。)

(red|blue|green)

查找任何指定的选项。

3.3正则表达式中相关的方法汇总

test()检验字符串中指定的值,返回true或false
exec()检验字符串中指定的值。返回找到的值,并确定其位置
search()检索与正则表达式相匹配的值
match()找到一个或多个正则表达式的匹配
replace()替换与正则表达式匹配的子串
split()把字符串分割为字符串数组

相关文章:

web学习笔记(三十四)

目录 1.面向对象的特征 2.面向对象的继承方式 3.正则表达式 3.1如何创建正则表达式 3.2边界符 3.2[ ]方括号 3.3正则表达式中相关的方法汇总 1.面向对象的特征 封装性:就像是把东西放在一个密封的盒子里一样,只让外部使用者通过指定的接口来访…...

2024/03/16----面试中遇到的一些面试题

1.请简单的说一下IOC,AOP 1.1 IOC 控制反转(IOC)是一种设计思想,就是将原本在程序中需要手动创建对象,现在交由Spring管理创建,从而降低代码之间的耦合度。 IoC 最常见以及最合理的实现方式叫做依赖注入…...

【SysBench】Linux 安装 sysbench-1.20

安装目的是为了对 MySQL 8.0.x 、PostgreSQL 进行基准测试。 0、sysbench 简介 sysbench 是一个可编写脚本的多线程基准测试工具,基于 LuaJIT 。 它最常用于数据库基准测试,但也可以 用于创建任意不涉及数据库服务器的复杂工作负载。 sysbench 附带以…...

设计模式 — — 代理模式

一、是什么 代理模式(Proxy Pattern)是为一个对象提供一个代用品或占位符,以便控制对它的 生活场景: 租房、买房,比如链家等房屋中介机构,起到的作用就是代理 二、使用 const proxy new Proxy(target, …...

【高通camera hal bug分析】高通自带相机镜像问题

首先打了两个log,一个是开启镜像的log,还有一个是没有开启镜像的log,如果我们开启镜像以后,观察开启镜像log发现 , 这段代码走的没有任何问题,因为Flip的值等于1了。 关闭镜像log如下: 如果我们不开启镜像…...

EPICS和Arduino Uno之间基于串行文本协议的控制开发

Arduino Uno的串口服务程序设置如文本的串口通信协议设计以及在Arduino上的应用-CSDN博客中所示。通过在串口上发送约定的文本协议,它实现的功能如下: 实现功能: 读取三路0.0V~5.0V模拟量输入,读取端口A0~A2设置三路0.0V~5.0V的模…...

数据结构的概念大合集02(线性表)

概念大合集02 1、线性表及其逻辑结构1.1 线性表的定义1.2 线性表的基本操作 2、线性表的顺序存储结构2.1 顺序表 3、线性表的链式存储3.1 链表3.1.1 头结点(头指针),首指针,尾指针,尾结点3.1.2 单链表3.1.3 双链表3.1.…...

CSS3DRenderer, CSS3DSprite API 使用案例demo

CSS3DRenderer, CSS3DSprite API 使用案例demo <!DOCTYPE html> <html><head><title>three.js css3d - sprites</title><meta charset"utf-8"><meta name"viewport" content"widthdevice-width, user-scalabl…...

河马优化算法(HO)-2024年Nature子刊新算法 公式原理详解与性能测评 Matlab代码免费获取

声明&#xff1a;文章是从本人公众号中复制而来&#xff0c;因此&#xff0c;想最新最快了解各类智能优化算法及其改进的朋友&#xff0c;可关注我的公众号&#xff1a;强盛机器学习&#xff0c;不定期会有很多免费代码分享~ 目录 原理简介 一、种群初始化 二、河马在河流或…...

SLAM 算法综述

LiDAR SLAM 其主要思想是通过两个算法&#xff1a;一个高频激光里程计进行低精度的运动估计&#xff0c;即使用激光雷达做里程计计算两次扫描之间的位姿变换&#xff1b;另一个是执行低频但是高精度的建图与校正里程计&#xff0c;利用多次扫描的结果构建地图&#xff0c;细化位…...

搭建Hadoop3.x完全分布式集群

零、资源准备 虚拟机相关&#xff1a; VMware workstation 16&#xff1a;虚拟机 > vmware_177981.zipCentOS Stream 9&#xff1a;虚拟机 > CentOS-Stream-9-latest-x86_64-dvd1.iso Hadoop相关 jdk1.8&#xff1a;JDK > jdk-8u261-linux-x64.tar.gzHadoop 3.3.6&am…...

linux常用命令(二)

目录 前言 常用命令 1.ls命令 2. cd命令 3.pwd命令 4.mkdir 命令 5. rmdir 命令 6.rm 命令 7.cp命令 8.mv命令 9.touch命令 10.cat命令 11.more命令 12.less命令 13.head命令 14.tail命令 15.tail命令 16.find命令 17.tar命令 18.gzip命令 19.gunzip命令 …...

【Vue】Request模块 - axios 封装Vuex的持久化存储

&#x1f4dd;个人主页&#xff1a;五敷有你 &#x1f525;系列专栏&#xff1a;Vue ⛺️稳中求进&#xff0c;晒太阳 Request模块 - axios 封装 使用axios来请求后端接口&#xff0c;一般会对axios进行一些配置&#xff08;比如配置基础地址&#xff0c;请求响应拦截器…...

【2024第一期CANN训练营】4、AscendCL推理应用开发

文章目录 【2024第一期CANN训练营】4、AscendCL推理应用开发1. 创建代码目录2. 构建模型2.1 下载原始模型文件2.2 使用ATC工具转换模型2.3 注意事项 3. 模型加载3.1 示例代码 4. 模型执行4.1 获取模型描述信息4.2 准备输入/输出数据结构4.3 执行模型推理4.4 释放内存和数据类型…...

Rust 构建开源 Pingora 框架可以与nginx媲美

一、概述 Cloudflare 为何弃用 Nginx&#xff0c;选择使用 Rust 重新构建新的代理 Pingora 框架。Cloudflare 成立于2010年&#xff0c;是一家领先的云服务提供商&#xff0c;专注于内容分发网络&#xff08;CDN&#xff09;和分布式域名解析。它提供一系列安全和性能优化服务…...

MediaCodec源码分析 ACodec状态详解

前言 本文分析ACodec状态机,ACodec是MediaCodec的底层实现,在MediaCodec命令下切换不同状态进行编解码,基于7.0代码。 ACodec状态介绍 UninitializedState:未初始化状态。 在业务层调用MediaCodec. createByCodecName 完成后切换到LoadedState。 LoadedState:表示解码器…...

【Elasticsearch】windows安装elasticsearch教程及遇到的坑

一、安装参考 1、安装参考&#xff1a;ES的安装使用(windows版) elasticsearch的下载地址&#xff1a;https://www.elastic.co/cn/downloads/elasticsearch ik分词器的下载地址&#xff1a;https://github.com/medcl/elasticsearch-analysis-ik/releases kibana可视化工具下载…...

如何快速搭建物联网工业云平台

随着物联网技术的快速发展&#xff0c;物联网工业云平台已经成为推动工业领域数字化转型的重要引擎。合沃作为专业的物联网云服务提供商&#xff0c;致力于为企业提供高效、可靠的物联网工业云平台解决方案。本文将深入探讨物联网工业云平台的功能、解决行业痛点的能力以及如何…...

Spring Data访问Elasticsearch----Elasticsearch对象映射

Spring Data访问Elasticsearch----Elasticsearch对象映射 一、元模型(Meta Model)对象映射1.1 映射注解概述1.1.1 控制向Elasticsearch写入和从其读取哪些属性1.1.2 日期格式映射1.1.3 Range类型1.1.4 映射的字段名1.1.5 Non-field-backed属性1.1.6 其他属性注解 1.2 映射规则1…...

Linux之shell循环

华子目录 for循环带列表的for循环格式分析示例shell允许用户指定for语句的步长&#xff0c;格式如下示例 不带列表的for循环示例 基于C语言风格的for循环格式示例注意 while循环格式示例 until循环作用格式示例 循环控制breakcontinue详细语法示例 循环嵌套示例 for循环 for循…...

AUnit:面向Arduino的轻量级嵌入式单元测试框架

1. AUnit&#xff1a;面向嵌入式Arduino平台的轻量级单元测试框架1.1 设计动因与核心定位AUnit并非凭空诞生的全新框架&#xff0c;而是针对ArduinoUnit 2.2在实际工程中暴露出的三大痛点所进行的深度重构与优化。作为一名长期在资源受限的8位AVR平台&#xff08;如Arduino UNO…...

实战指南:如何快速解决WebApi在IIS部署中的HTTP 500.19配置错误

1. 遇到HTTP 500.19错误时先别慌 第一次把WebApi部署到IIS服务器就遇到HTTP 500.19错误&#xff0c;相信很多开发者都会心头一紧。这个错误通常伴随着"配置数据无效"的提示&#xff0c;看起来挺吓人&#xff0c;但实际上解决起来并不复杂。我刚开始接触IIS部署时也踩…...

LM358充电器电路设计:从原理到实践

1. LM358芯片基础解析 LM358这颗双运放芯片可以说是电子设计领域的"万金油"了。我第一次接触它是在大学电子竞赛时&#xff0c;老师随手扔给我们几片说&#xff1a;"用这个&#xff0c;不容易烧。"果然&#xff0c;从5V到32V的宽电压范围让它成为新手最友好…...

如何使用4个经过验证的技巧将Android联系人备份到Mac

联系人无疑是我们智能手机上最重要的数据。一旦失去联系&#xff0c;我们就会与这个世界上最亲爱的人失去联系&#xff1b;也许他们是家人、爱人、朋友、同学、同事、学生等。因此&#xff0c;联系人备份对我们来说非常重要。与将iPhone联系人备份到Mac相对容易不同&#xff0c…...

告别“炼丹”:用ReVeal的GGNN+Triplet Loss实战代码漏洞检测,我踩过的坑你别踩

从理论到实践&#xff1a;ReVeal漏洞检测模型落地中的关键挑战与解决方案 在代码安全领域&#xff0c;深度学习技术的应用正经历着从实验室研究到工业落地的关键转折期。ReVeal作为近年来备受关注的漏洞检测框架&#xff0c;其结合GGNN图神经网络与Triplet Loss的创新设计&…...

化整为零、分而治之、异步编排:一文读懂现代并发的底层心法

LongAdder&#xff1a;化整为零&#xff0c;热点分散 在Java多线程编程中&#xff0c;‌原子变量&#xff08;如AtomicLong&#xff09;‌通过CAS操作实现线程安全的累加。然而&#xff0c;在高并发场景下&#xff0c;大量线程争抢同一原子变量会引发严重的‌缓存一致性问题‌。…...

AI-AGENT概念解析 - LLM部署文件

**问题&#xff1a;那一个下载到本地的大模型中&#xff0c;包括哪些文件&#xff0c;各有什么功能和作用&#xff0c;不同的大模型&#xff0c;包括的文件应该是不一样的。 大家会很自然地问到&#xff1a;下载到本地的大模型文件夹里到底有哪些文件&#xff1f;不同模型的文件…...

OpenClaw家装设计:Qwen2.5-VL-7B根据户型图生成3D效果示意图

OpenClaw家装设计&#xff1a;Qwen2.5-VL-7B根据户型图生成3D效果示意图 1. 为什么选择OpenClaw做家装设计自动化 去年装修新房时&#xff0c;我花了大量时间在设计师和施工队之间来回沟通。每次修改设计方案都需要等待设计师重新出图&#xff0c;周期长、成本高。直到发现Op…...

国内专业的铣打机厂家哪家专业

在制造业蓬勃发展的今天&#xff0c;铣打机作为轴类零件加工的关键设备&#xff0c;其性能和质量直接影响着生产效率和产品质量。面对市场上众多的铣打机厂家&#xff0c;该如何选择一家专业可靠的呢&#xff1f;今天就为大家介绍一家在行业内颇具口碑的企业——无锡通亚数控智…...

突破平台壁垒:探索5种在Windows运行Android应用的实战方案与终极选择

突破平台壁垒&#xff1a;探索5种在Windows运行Android应用的实战方案与终极选择 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer 在数字化办公与娱乐深度融合的今天&am…...