概论
引用值是某个特定引用类型的实例。引用类型是把数据和功能组合在一起的结构。经常被人称为类。但是在JavaScript中缺少传递面向对象编程语言所具备的某些基本结构,包括类和接口。引用类型有时候也成为对象定义。对象称作为某个特定引用类型的实例。新对象通过使用new操作符跟一个构造函数来创造
Date
Date是JavaScript自带的一个日期类。要创建一个日期类,需要使用new来创建。不给Date传递参数的时候创建的是当前时间的日期。ECMSScript为此还提供两个辅助函数Date.parse()和Date.UTC()
Date类型还重写了toLocaleString()、toString()和valueOf()方法
RegExp
RegExp类型支持正则表达式。正则表达式使用的是Perl的简洁语法来创建。正则表达式可以带零个或者多个flags(标记)用于控制正则表达式的行为
- g 全局模式
- i 不区分大小写
- m 多行模式
- y 粘附模式
- u Unicode 模式
- s dotAll 模式
RegExp实例的主要方法式exec(),主要用于捕获组使用,这个方法只接收一个参数,即要应用模式的字符串。如果找到匹配项,则返回包含第一个匹配项的数据,如果没有找到,则返回null,虽然返回项是数组,但包含两个额外的属性:index和input.index表示匹配模型的起始位置。input要查找的字符串
原始包装类型
为了方便操作原始值,ECMASCript提供三种特殊的引用类型:Boolean、Number和String。每当用到某个原始值的属性和方法的时候,后台都会相应的包装类型的对象,从而暴露操作原始值的各种方法
let s1 = "a"
let s2 = s1.substring(0)
在这里s1是包含字符串的变量,它是一个原始值,第二行紧接着在s1上调用substring()方法,并把结果保存到s2中。我们知道原始值本身不是对象,因此在逻辑上是不存在方法和属性的,而实际上这个例子又确实按照预期运行了。具体原因是在第二行访问s1的时候,是以读模式访问,也就是从内存访问变量保存的值,在读模式访问字符串的任何时候,后台都会先创建一个String类型的实例,调用实例上的方法和销毁实例。所有原始才能够正常的调用属性或者方法。在此需要注意的是,用new创建的是对象,直接构造函数实例的是转换方法,本质上还是原始值
const value = "25"
const number = Number(value) // number
const number1 = new Number(value) // object
Number的实例对象又toFixed()函数,toFiexd()函数可以将数值转化成带指定小数点的字符串。isInteger()函数可以判断一个数值是不是整数
String可以通知chartAt()取得指定索引的字符,通过fromCharCode函数把指定编码链接成字符串
String的方法
String的方法一般分为字符串操作方法、字符串位置方法、字符串包含方法、trim方法、repeat方法、字符串迭代与解构、字符串模式匹配方法
字符串操作方法
字符串操作首先用到的是concat()方法,用于将一个或者多个字符串拼接成一个新的字符串。ES还提供给3个从字符串提取字符串的方法,分为为slice、substr和substring。这三个方法都返回调用他们的字符串的一个子字符串,而且都接收一个或者两个参数。第一个蚕食表示字符串开始的位置,第二个参数表示字符串结束的位置,对slice和substring而言,第二个参数表示字符串结束的位置,对substr而言,第二个参数表示字符串的长度。如果第二个参数为空,则表示从开始位置一直取到最后。三个方法在参数为负数的时候,表现的就差别很大了,slice()方法将所有的负数都当成字符串长度加上负数值,substr方法将第一个参数为负数的值加上字符串长度,第二个负数转换成0,substring()则是将所有的负参数转化成0
字符串位置方法
有两个方法用于在字符串中定位子字符串:indexOf()和lastIndexOf()。这两个方法从字符串中搜索字符串,并返回位置。两者的区别在于,indexOf()方法从字符串的头部开始查找,lastIndexOf()从字符串尾部查找字符串。这两个字符串都可以接收第二个参数,表示字符串搜索的位置。
字符串包含方法
在ES6增加了3个用于判断字符串是否包含另外一个字符串的方法,startsWith()、endsWith()和includes()这些方法都会从字符串中搜索传入的字符串,并返回一个是否包含的布尔值,startWith()检查开始于索引0的匹配项,endsWith()检查开始于索引(string.length-substring.length)的匹配项,而includes()检查整个字符串
startsWith()和endsWith()方法都接收可选的第二个参数,表示开始搜索的位置。
trim()
trim()表示删除前后的空格。trimLeft()删除前空格trimRight()删除后空格
repeat
repeat()方法接收一个整数参数表示将字符串复制多少次
字符串迭代方法
字符串的原型上暴露了一个@@iterator方法,来表示迭代字符串的每个字符。可以手动使用迭代器
let message = “abc”
for(const c of messgae) {
}
const a = [...message]
字符串大小写转换
大小写转换包括4个方法,tolowerCase(),toLocaleLowerCase()、toUpperCase()
字符串模式匹配
match方法和RegExp对象的exec()方法相同。match()方法接收一个参数,可以是一个正则表达式,也可以是一个RegExp对象
网友评论