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()把字符串分割为字符串数组

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

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

相关文章

python入门(二)

python的安装很方便,我们这里就不再进行讲解,大家可以自己去搜索视频。下面分享一下Python的入门知识点。 执行命令的方式 在安装好python后,有两种方式可以执行命令: 命令行程序文件,后缀名为.py 对于命令行&…

Github 2024-03-16 开源项目日报Top10

根据Github Trendings的统计,今日(2024-03-16统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Python项目5非开发语言项目2TypeScript项目1C++项目1Lua项目1Swift项目1《Hello 算法》:动画图解、一键运行的数据结构与算法教程 创建周期:4…

Linux服务器(Debian系)包含UOS安全相关巡检shell脚本

#!/bin/bash# Define output file current_date$(date "%Y%m%d") # Gets the current date in YYYYMMDD format output_file"server_security_inspection_report_${current_date}.txt"# Empty the file initially echo > $output_file# 获取巡检时间 (…

MVCC(多版本并发控制)原理实现

MVCC(多版本并发控制)原理实现 一、实现组件二、数据可见性判断三、可见性描述 多版本并发控制(MVCC,Multi-Version Concurrency Control),是一种并发控制的方法。 MySQL InnoDB巧妙地利用了隐藏列、事务ID…

暴雨高性能分布式存储为AI提供坚实数据存力

随着两会的圆满落幕,新质生产力和人工智能的发展成为社会各界热议的焦点。总理在两会后的首次调研中,特别强调了新质生产力和人工智能的重要性,这无疑为人工智能产业的蓬勃发展注入了新的动力。 年初,Sora所引领的人工智能热潮更…

Selenium WebDriver提供By.CSS_SELECTOR定位元素方法

By.CSS_SELECTOR 是 Selenium WebDriver 提供的一种定位元素的方法,它允许使用 CSS 选择器来定位页面上的元素。以下是常见的 CSS 选择器语法: 1. **标签选择器(Tag Selector)**:通过元素的标签名选择元素。 - 示例…

【入门】保研/考研408机试-基本知识点(输入/出、基本数学、字符串)

目录 一、基础结构方面 1.1调用标准库* 1.2输入输出方面 1.2.1保留几位小数输出* 1.2.2字符/字符串* 1.2.3输入n个数(循环用) 1.3i和i 二、数学方面 2.1绝对值 2.2幂次方 2.3取整问题 2.4涉及分数计算 三、字符串方面 3.1字符比较 例题&…

Linux中的音频开发

在Linux环境下进行音频开发,你可能会面临多种挑战和任务,从基础的音频播放和录制到复杂的音频处理和流媒体传输。以下是一些音频开发课题和建议: ### 题目1:基础音频播放 **描述**:开发一个简单的命令行应用程序&…

矩阵消元-MIT

文章目录 1. 行变换消元法 1. 行变换消元法 假设我们有一个方程组表示如下: x 2 y z 2 ; 3 x 8 y z 12 ; 4 y z 2 (1) x2yz2;\quad 3x8yz12;\quad4yz2\tag{1} x2yz2;3x8yz12;4yz2(1)矩阵表示如下: [ 1 2 1 3 8 1 0 4 1 ] → [ 1 2 1 0 2 − 2…

【分布式websocket 】前端vuex管理客户端消息crud!使用localStorage来存储【第19期】

前言 聊天系统客户端是要存储消息的,因为所有所有的历史消息都从服务器拉的话一方面服务器压力大,另一方面也耗费用户流量。所以客户端存储消息是势在必行的。如何存储呢上一篇文章也写了,大概就是浏览器的话是localStorage或者IndexedDB。然…

MIT线性代数-方程组的几何解释

文章目录 1. 二维空间1.1 行方向1.2 列方向 2. 三维空间2.1 行方向2.2 列方向 假设有一个方程组 A X B AXB AXB表示如下 2 x − y 0 (1) 2x-y0\tag{1} 2x−y0(1) − x 2 y 3 (2) -x2y3\tag{2} −x2y3(2) 矩阵表示如下: [ 2 − 1 − 1 2 ] [ x y ] [ 0 3 ] (3)…

JavaScript面向对象详解(一)

一. JavaScript的对象 传统的面向对象 面向对象语言的一个标志就是类类是所有对象的统称, 是更高意义上的一种抽象. 对象是类的实例.通过类我们可以创建任意多个具体的对象. 在学习C/OC/Java/Python等编程语言的时候, 都可以按照这种方式去创建类和对象.JavaScript的面向对象…

(四)Android布局类型(线性布局LinearLayout)

线性布局(LinearLayout):按照一定的方向排列组件,方向主要分为水平方向和垂直方向。方向的设置通过属性android:orientation设置 android:orientation 其取值有两种 水平方向:android:orientation"horizontal&…

Lua-Lua与C的交互3

Lua与C的交互是指在Lua脚本中调用C语言编写的函数或者在C语言中调用Lua脚本中定义的函数。这种交互可以实现Lua和C语言之间的数据传递和函数调用。 Lua提供了一组API函数,可以在C语言中使用这些函数来与Lua进行交互。通过这些API函数,C语言可以将数据传…

Java中如何解决if-else(策略+枚举)

最近接到了一个新需求,按照不同的编码去执行不同的逻辑,但最后返回的数据类型是一致的,都是相同对象的List集合。 完成这个需求的话可以使用if-else来执行不同的方法,虽然if-else可以实现,但if-else是一种面向过程的实…

MongoDB——linux中yum命令安装及配置

一、创建mongodb-org-3.4.repo文件 vi /etc/yum.repos.d/mongodb-org-3.4.repo 将下面内容添加到创建的文件中 [mongodb-org-3.4] nameMongoDB Repository baseurlhttps://repo.mongodb.org/yum/amazon/2013.03/mongodb-org/3.4/x86_64/ gpgcheck1 enabled1 gpgkeyhttps://www…

本地用AIGC生成图像与视频

最近AI界最火的话题,当属Sora了。遗憾的是,Sora目前还没开源或提供模型下载,所以没法在本地跑起来。但是,业界有一些开源的图像与视频生成模型。虽然效果上还没那么惊艳,但还是值得我们体验与学习下的。 Stable Diffu…

Ubuntu Linux - Primavera P6 EPPM 安装及分享

引言 根据计划,近日我制作了基于Ubuntu Linux 的P6虚拟机环境,同样里面包含了全套P6 最新版应用服务 此虚拟机仅用于演示、培训和测试目的。如您在生产环境中使用此虚拟机,请先与Oracle Primavera销售代表取得联系,以获取所需的应…

无人机助力智慧农田除草新模式,基于YOLOv5全系列【n/s/m/l/x】参数模型开发构建无人机航拍场景下的农田杂草检测识别系统

科技发展到今天,无人机喷洒药物已经不是一件新鲜事情了,在很多高危的工作领域中,比如高空电力设备除冰,电力设备部件传送更换等等,无人机都可以扮演非常出色的作用,前面回到老家一段时间,最近正…

吴恩达deeplearning.ai:使用多个决策树随机森林

以下内容有任何不理解可以翻看我之前的博客哦:吴恩达deeplearning.ai专栏 文章目录 为什么要使用树集合使用多个决策树(Tree Ensemble)有放回抽样随机森林XGBoost(eXtream Gradient Boosting)XGBoost的库实现何时使用决策树决策树和树集合神经网络 使用单个决策树的…