You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
vartext="mom anđ đađ anđ baby";.varpattern=/mom(anđdad(andbaby)?)?/gi;//包含两个捕获组,“and baby”和包含它的“anđ dad and baby”varmatches=pattern.exec(text);alert(matches.index);// O 整个字符串符合,所以返回0alert(matches.input);// "mom anđ dad anđ baby"alert(matches[0]);// "mom anđ dad and baby' 匹配的整个字符串alert(matches[1]);// " and dad and baby' 与第一个捕获组匹配的内容alertlmatches[2]);//"and baby" 与第二个捕获组匹配的内容
vartext="this has been a short summer";varpattern=/(.)hort/g;/**注意: Opera不支持 input. lastMatch, lastParen fo multiline 属性*Internet Explorer 不支持 multiline属性 */if(pattern.test(text)){alert(RegExp.input)// this has been a short summer .alert(RegExp.1eftContext)// this has been aalert(RegExp.rightcontext)//summeralert(RegExp.lastMatch)//shortalert(RegExp.lastParen)//salert(RegExp.multiline)//false}
除此之外,还有RegExp.$1 用于存储第一个匹配的捕获组。
vartext="this has been a short summer";varpattern=/(.)ho(..)/g;if(pattern.test(text)){alert(RegExp.$1)//salert(RegExp.$2)//rt}
vartext="cat,bat"varpattern=/.at/varmatches=text.match(pattern)//返回的是数组//等于 var matches=pattern.exec(text)alert(matches.index)//0alert(matches[0])//"cat"
引用类型
又被称为“对象定义”,引用类型的值——是引用类型的一个实例。
比如创建object时,即创建了引用类型的一个新实例。
Object类型
创建object类型的方法
可以通过使用 typeof 来检测对象中是否含有某个特定的属性。
除了点表示法外,还可以使用方括号表示法
方括号法——可以通过变量来访问属性↓
Array类型
array类型:可以在同一个数组中保存不同的数据类型。
创建方法
length属性
检测数组
需要在单一的全局执行环境中。
若有两个以上不同的全局执行环境,则会有两个以上不同版本的Array构造函数
数组转换
数组转换成字符串
默认都返回以逗号分隔的字符串形式。
可以使用不同的分隔符来构建字符串
栈方法
将数组看作是一个栈,有push和pop方法,后进先出
队列方法
先进先出,有push和shift方法,此外还有unshift方法
重排序方法
reverse():会反转数组项的顺序,即倒排。
sort():默认是按升序排序数组项。运用toString方法转为字符串,再进行比较。数字也是转为字符串比较,并不是按数字大小比较。
**compare()**方法:比较两个参数,若为升序,则前者大返回1.若为降序则相反即可。可适用于大多数数据类型。
如果按照升序排序,则compare可以简化成:
操作方法
concat():基于当前数组中的所有项,创建一个新数组。
slice():基于当前数组中的一个或多个项创建一个新数组。
接收两个参数:则是指定起始位置和结束位置
接收一个参数:则是指定起始位置到数组结束。
splice():向数组的中部插入项。
删除:两个参数,要删除的第一项位置,要删除的项数。返回的是删除的内容。
插入:三个参数,起始位置,0(本来是要删除的项数),要插入的项。返回的是空数组
替换:三个参数,起始位置,要插入的任意数量的项。
splice(2,1,"red","green") 会删除第二项,并在位置2开始插入字符串。返回的是删除的内容。
位置方法
查找数组中指定内容的位置,若没有则返回-1。
都是接受两个参数:查找的项、查找起点位置(可空)
比较时,使用的是全等,===。因此需要严格相等才算相等。
迭代方法
迭代函数的方法有以下几个:
都是对数组中的每一项运行给定函数
这些方法都是接收两个参数:
缩小方法
两个方法迭代数组的所有项,然后构建一个最终返回的值。
两个方法,都是接收两个参数:
Date类型
创建:(默认存储当前时间)
根据特定的日期时间创建,需要传入毫秒数(从1970年1月1日午夜起到该日期经过的毫秒数)
parse()方法:
UTC()方法:
注意:月份0表示1月。
且参数只有年月是必须的,若其他参数没有提供,则默认为0(天数默认为1)。
获取当前时间的函数:
Date的toLocaleString()和toString()方法在不同浏览器中不同。toString有包含时区。
Date返回的不是字符串,而是毫秒,因此可以直接比较
日期格式化
将日期格式化为字符串的方法
与tolocaleString ()和toString()方法一样,以上这些字符串格式方法的输出也是因浏览器而异的。
RegExp类型
通过RegExp类型来支持正则表达式
flags:
字符\ ,添加转义后是\\,双重转义是\\\\
使用正则表达式字面量和使用构造函数创建正则表达式的不同:
RegExp实例方法
exec():为捕获组而设计
对于exec来说,即使设置了全局标志g,它每次也只会返回一个匹配项,但也有所不同:
若不设置全局标志,则多次调用也将始终返回第一个匹配项内容
若设置全局标志,则多次调用会沿上一次查找到的位置继续查找新的匹配项。
test():匹配返回true,只想知道是否匹配而不需要知道内容的情况下使用。常用在if语句中。
RegExp构造函数属性
有以下属性
除此之外,还有RegExp.$1 用于存储第一个匹配的捕获组。
Function类型
函数实际上的对象,是Function的实例。具有属性和方法。
函数的创建
“函数是对象,函数名是指针”,因此一个函数可能有多个名字(多个变量指向函数本身)
不带()的函数引用,是访问函数指针,即函数本身。
带()的函数引用,是访问函数的返回值
函数没有重载
若创建第二个同名函数,则会覆盖前一个函数。因为 函数名是指针
函数声明与函数表达式
函数声明与函数表达式,在解析器向执行环境中加载数据时,有区别。
此时函数位于函数声明中。在代码开始前,解析器会通过函数声明提升的过程,加载函数声明。js引擎会把函数声明提升到顶部,因此上面的代码可以正确运行
此时函数位于一个初始化语句中,而不是函数声明中。执行第一行代码时,sum没有声明。
作为值的函数
函数中可以嵌套函数,在返回值中定义一个新的函数
函数内部属性
函数内部有两个特殊的对象
arguments:类数组对象,用于保存函数参数。但它有一个名为callee的属性,改属性是一个指针,指向拥有这个arguments对象的函数
this:this引用的是函数以执行的环境对象,即this值。
(在网页中调用函数时,this引用的是window)
还有一个函数对象的属性:caller,保存着调用当前函数的函数。
若在全局中调用,则为null。
在严格模式下,访问arguments.callee会错误,定义的arguments.caller也会错误,在非严格模式下,arguments.caller始终的undefined。
函数属性和方法
函数的属性:
函数的方法(非继承):
都是在特定的作用域中调用函数,即设置this对象的值
apply():两个参数:运行函数的作用域this、参数数组(可以是Array或arguments)。
call():和apply作用一样,但是传参时,除了this之外,其他参数要一个一个传
这两个方法更重要的作用是能够扩大函数的作用域,且对象与方法不需要耦合。
基本包装类型
String、Number、Boolean。
使用new Object 会调用Object构造函数,通过传入参数的类型,包装成相应的基本类型的实例
也可以显式的使用new String/Number/Boolean,创建object类型的实例。尽量不使用。
Boolean
在Boolean的所有对象都会被转换成true,建议不要使用Boolean对象。
Number
toPrecision(),返回固定大小格式或指数格式。参数为数值的所有数字位数
String
属性:length,包含的字符串长度,包含空格
方法:
字符方法:访问字符串中特定字符
字符串操作方法
concat():将一个或多个字符串拼接起来,返回新字符串
直接使用+号,对字符串进行拼接。
slice()、substr()、substring():基于子字符串创建新字符串。
第一个参数都代表开始的位置。
slice()、substring()的第二个参数是结束的位置,结束位置的字符也不留下。
substr()的第二个参数是值留下字符的长度。
当参数有负数时:
字符串位置方法
在字符串中搜索给定的子字符串,返回位置。若不存在则返回-1
第一个参数:搜索的字符串
第二个参数(可选):开始搜索的位置
可以与循环搭配使用,找出所有匹配的子字符串
大小写转换方法
大写换成小写:toLocaleLowerCase()、toLowerCase()
小写换成大写:toLocaleUpperCase()、toUpperCase()
模式匹配方法
match():与RegExp的exec()方法相同,只接受一个参数:正则表达式或者RegExp对象,返回匹配的内容数组
search():只接受一个参数:正则表达式或者RegExp对象,返回字符串中第一个匹配项的索引**(位置)**
replace():两个参数:
split():基于指定的分隔符,将字符串分隔为多个字符串,放入数组中。两个参数:
字符串比较方法:localeCompare()
返回值:
构造函数的静态方法:fromCharCode()
接收字符编码,转换成一个字符串。与charCodeAt()相反。
参数是每个字母的字符编码。
HTML方法
js动态格式化HTML
尽量不使用这些方法,因为创建的标记通常无法表达语义。
(表格见5.6最后一个方法)
单体内置对象
内置对象:不依赖宿主环境的对象,这些对象在ECMAScript程序执行前就已经存在。
也就是说,开发者不必显式地实例化内置对象,因为他们已经实例化了。
内置对象的例子:Object、Array和String
还有两个单体内置对象:Global、Math。
Global对象:即全局对象,这个对象是不存在的,所有在全局作用域中定义的属性和函数,都是Global对象的属性和方法。是一种“兜底对象”。
它还包含其他的一些方法:
URI编码方法:encodeURI()、encodeURIComponent()方法。
可以对URI(通用资源标识符)进行编码,以便发给浏览器。
它可以替换所有无效的字符(比如空格),替换成%,从而让浏览器能够接受。
encodeURI():全局,不会对自身的特殊字符编码,如:冒号、正斜杠、问号、井号
encodeURIComponent():对某一段,会替换所有非字母数字字符
互相对应:decodeURI()、decodeURIComponent()解码
eval()方法:一个完整的解析器,只接受一个参数:要执行的字符串(可以是任何js语句、函数、)。
在eval中创建的变量和函数,都不会被提升,只在eval()执行的时候才创建。
属性:
特殊值(undefined、Infinity)、所有原生引用类型的构造函数(Object、Function)
通常是将Global对象作为window对象的一部分加以实现的。
Math对象:保存数学公式和信息的位置。
方法:
min()、max():接收多个参数,返回参数中最大/最小值。
要是想传数组,可以使用apply()
舍入方法:接收一个参数
随机数:random(),返回一个介于0-1之间的随机数,不包括0,1.
The text was updated successfully, but these errors were encountered: