JavaScript——驰骋网页的脚本执行者(5)

七、基本包装类型

1.包装类型的概念

为了便于操作基本类型值,ECMAScript提供了3个特殊的引用类Boolean, Number, String。每当读取一个基本类型值的时候,后台就会创建一个对应的基本包装类型对象,从而可以使我们调用一些方法操作这些数据,如:

var s = "briup";

s.substring(2);

后台会自动完成这些操作:创建String类型的一个实例在实例上调用指定的方法销毁这个实例

 

Object构造函数会根据传入的值的类型返回相应基本包装类型的实例,如:

var obj = new Object("briup"); //obj类型为String包装类型

console.log(obj instanceof String); //true

使用new调用基本包装类型的构造函数会构建Object的实例直接调用同名的包装类型则会构建相应的包装类型实例,如:

var s = "11";

var s1 = Number(s); //得到number类型的对象

var s2 = new Number(s); //得到object类型的直接对象

常用的包装器类型为String不建议直接使用Boolean和Number这两种包装器类型

 

2.String类型

length; //属性,获取字符串的字符数量

charAt(i); //返回给定位置的字符

charCodeAt(); //返回给定位置的字符的字符编码

indexOf(); //从前往后查找指定字符所在位置

lastIndexOf(); //从后往前查找字符串所在位置,可以有第二个参数,代表从字 符 串中哪个位置开始查找

concat(); //将一个或多个字符串拼接起来,返回拼接得到的新字符串,但大多情况下直接使用"+"拼接

slice(); //截取字符串,参数为(开始位置,返回字符后一个字符位置)

substring(); //截取字符串,参数为(开始位置,返回字符后一个字符位置),不改变原值大小

substr(); //截取字符串,参数为(开始位置,返回的字符个数)

trim(); //删除字符串前后的所有空格,不删除包含在字符串内的空格,返回结果

toLowerCase(); //字符串中的字符转换为小写

toUpperCase(); //字符串中的字符转换为大写

 

JavaScript中为String对正则表达式的支持提供了一些方法:

search():参数为一个正则表达式。如果参数不为正则表达式,则先通过RegExp将其转换为构造函数。不支持全局检索g。会返回第一个与之匹配的子串的位置,如果找不到匹配的子串,返回-1。类似于正则表达式的test方法

match():最常用的正则表达式方法,参数为正则表达式返回由匹配结果组成的数组。支持全局匹配g。类似于正则表达式的exec方法

replace():用以执行检索和替换操作。第一个参数是正则表达式,第二个参数是要替换的字符串。

split():以参数为界分割字符串。参数可为正则表达式,返回分割后的字符串值数组。

 

3.Math对象

Math.min(); //求一组数中的最小值,如Math.min(1,2)

Math.max(); //求一组数中的最大值

Math.ceil(); //向上舍入

Math.floor(); //向下舍入

Math.round(); //四舍五入

Math.random(); //返回一个大于0小于1的随机数

abs(num); //返回num绝对值

exp(num) ; //返回Math.Enum次幂

log(num); //返回num的自然对数

pow(num,power); //返回numpower次幂

sqrt(num); //返回num的平方根

scos(x); //返回x的反余弦值

asin(x); //返回x的反正弦值

atan(x); //返回x的反正切值

atan2(y,x); //返回y/x的反正切值

cos(x); //返回x的余弦值

sin(x); //返回x的正弦值

tan(x); //返回x的正切值

...

 

4.Date对象

将一个字符串转换为Date对象,如:

var str = "2019-08-28";

var date = new Date(str);

 

Date.prototype.getFullYear():返回日期对象中的年份,如:

var date = new Date(); //2019-08-28

document.write(date.getFullYear()); //2019

Date.prototype.getMonth():返回日期对象中的月份数,如:

var date = new Date();

document.write(date.getMonth()); //7注意此处与通常理解有些偏差,1月份返回是0,12月返回是11

Date.prototype.getDate():返回日期对象中日期数,:

var date = new Date();

document.write(date.getDate()); //28

Date.prototype.getDay():返回日期对象中的星期数,如:

var date = new Date();

document.write(date.getDay()); //3

Date.prototype.getHours():返回日期对象中的小时数,如:

var date = new Date();

document.write(date.getHours()); //10

Date.prototype.getMinutes():返回日期对象中的分钟数,如:

var date = new Date();

document.write(date.getMinutes()); //44

Date.prototype.getSeconds():返回日期对象中的秒数,如:

var date = new Date();

document.write(date.getSeconds()); //28

Date.prototype.getMilliseconds():返回日期对象中的毫秒数,如:

var date = new Date();

document.write(date.getMilliseconds());//27xxxxxxxxxxxxxx毫秒中的毫秒)

Date.prototype.getTime():将日期对象以毫秒形式返回,如:

var date = new Date();

document.write(date.getTime()); //1566962475098,返回值是1970-01-01 00:00到当前时间的毫秒数

Date.prototype.valueOf():日期对象调用该方法可以为毫秒形式的表示,否则不显示,如:

var date = "";

document.write(date.valueOf()); //不是Date对象,不显示

var date1 = new Date();

document.write(date1.valueOf()); //1566962475098,返回1970-01-01 00:00到当前时间的毫秒数

Date.prototype.toString():日期对象转换为字符串显示,如:

var date = new Date(); //2019-08-28

document.write(date.toString()); //Wed Aug 28 2019 11:18:40 GMT+0800 (中国标准时间)

Date.prototype.toLocaleTimeString():日期对象转化为本地格式的时间部分,如:

var date = new Date();

document.write(date.toLocaleTimeString());//下午2:40:35

Date.prototype.toJSON():将日期对象序列化为JSON字符串,如:

var date = new Date();

document.write(date.toJSON()); //2019-08-28T03:18:06.588Z

 

5.引用第三方库增强处理功效

引用第三方库的目的是,利用一种机制帮我们创建具有特殊功能的对象。主要前往CDN—前端开源项目加速服务(https://www.bootcdn.cn/all/)寻找优质解决方案,如:

Moment.jshttps://www.bootcdn.cn/moment.js///处理日期相关操作

lodash.jshttps://www.bootcdn.cn/lodash.js///增强ECMAScript的功效

 

八、正则表达式

正则表达式是一个描述字符模式的对象。

1.正则表达式的创建

可以使用构造函数创建

var pattern =new RegExp("正则表达式","修饰符");

var pattern =new RegExp("abc","ig");

var zipcode = new RegExp("\\d{5}","g");

可以使用正则表达式字面量创建

var pattern = /正则表达式/修饰符;

var pattern = /abc/ig;

 

修饰符有:iignore case),不区分大小写;gglobal),全局匹配,不识别换行符;mmultiline)多行模式,识别换行符。

 

2.正则表达式

. //(点号,小数点) 匹配任意单个字符,但是行结束符除外

\d //匹配任意阿拉伯数字。等价于[0-9]

\D //匹配任意一个不是阿拉伯数字的字符。等价于[^0-9]

\w //匹配任意来自基本拉丁字母表中的字母数字字符,还包括下划线。等价于 [A-Za-z0-9_]

\W //匹配任意不是基本拉丁字母表中单词(字母数字下划线)字符的字符。等价于 [^A-Za-z0-9_]

\s //匹配一个空白符,包括空格、制表符、换页符、换行符和其他Unicode空格

\S //匹配一个非空白符

\t //匹配一个水平制表符

\r //匹配一个回车符

\n //匹配一个换行符

\v //匹配一个垂直制表符

\f //匹配一个换页符

 

[xyz] //一个字符集合,也叫字符组。匹配集合中的任意一个字符。你可以使用连字符'-'指定一个范围

[^xyz] //一个反义或补充字符集,也叫反义字符组。也就是说,它匹配任意不在括号内的字符。你也可以通过使用连字符'-'指定一个范围内的字符

 

^ //匹配输入开始。如果多行(multiline)标志被设为 true,该字符也会匹配一个断行(line break)符后的开始处

$ //匹配输入结尾。如果多行(multiline)标志被设为 true,该字符也会匹配一个断行(line break)符的前的结尾处

\b //匹配一个零宽单词边界,如一个字母与一个空格之间

\B //匹配一个零宽非单词边界,如两个字母之间或两个空格之间

 

(x) //分组操作,匹配并且捕获匹配项。 常用被exec()方法使用

\n //n 是一个正整数。一个反向引用,指向正则表达式中第 n 个括号(从左开始数)中匹配的子字符串

 

x* //匹配x表达式0或多次

x+ //匹配x表达式1或多次,等价于 {1,}

x*? //匹配x表达式0或多次

x+? //匹配x表达式1或多次

x? //匹配x表达式01

x|y //匹配 x  y

x{n} //n 是一个正整数。x表达式连续出现n次时匹配

x{n,} //n 是一个正整数。x表达式出现至少n次时匹配

x{n,m} //n  m 为正整数。前面的模式x连续出现至少n次,至多m次时匹配

(贪婪匹配模式(默认情况下)会尽可能多的匹配,非贪婪匹配模式(在表达式后加上?号)会尽可能少的匹配)

 

3.正则表达式的原型属性和原型方法

RegExp.prototype.global:布尔值,表明这个正则表达式是否带有修饰符g

RegExp.prototype.ignoreCase:布尔值,表明这个正则表达式是否带有修饰符i

RegExp.prototype.multiline:布尔值,表明这个正则表达式是否带有修饰符m

RegExp.prototype.lastIndex:如果匹配模式带有g,这个属性存储在整个字符串中下一次检索的开始位置,这个属性会被exec()或者test()方法调用到

RegExp.prototype.source:包含正则表达式文本

 

RegExp.prototype.test(str):使用正则表达式对象测试str,如果str满足正则表达式返回true,否则返回false

RegExp.prototype.exec(str):从str中查找出满足正则表达式的字符串,返回值是类数组对象:查询到的结果,index:查询到结果的索引,input:操作的字符串,如果正则表达式用了分组,那么分组获取到的值将会依次出现在查询到的结果和input之间。

(如果正则表达式中有修饰符"g",这时,在pattern中会维护lastIndex属性,记录下一次开始的位置,当第二次执行testexec的时候,从lastIndex开始检索。如果正则表达式中没有修饰符"g",则不会维护lastIndex属性,每次执行从开始位置检索)

RegExp.prototype.toString()

转载于:https://www.cnblogs.com/wodeqiyuan/p/11425971.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值