Object 類型
創(chuàng)建Object實(shí)例的方式:
var person = new Object();
var person = { name : 'Mike', age : 23 } //屬性名可以使用字符串如 'age': 23
Array 類型
創(chuàng)建數(shù)組的基本方式:
- 使用Array構(gòu)造函數(shù) (new可省略)
var ar = new Array()
var ar = new Array(3) //給定長度為3
var ar = new Array('red', 'yellow', 'green')
- 數(shù)組字面量表示法
var ar = ['red', 'yellow', 'green']
var ar = []
var ar = [ , , , , ] //錯誤示范,會創(chuàng)建一個包含4或5項(xiàng)的數(shù)組,每一項(xiàng)是undefined
length屬性:
- length屬性不只是可讀的,通過設(shè)置length屬性可以從數(shù)組的末尾移除項(xiàng)或向數(shù)組中添加新項(xiàng),數(shù)組最多可包含4294967295個項(xiàng)。
檢測數(shù)組:
value instanceof Array //假設(shè)只有一個全局環(huán)境
Array.isArray(value) //低版本瀏覽器尚未實(shí)現(xiàn)該方法
Object.prototype.toString.call(array) == '[object Array]'
轉(zhuǎn)換方法:
ar.toString() //返回每一項(xiàng)調(diào)用toString方法得到的字符串然后逗號拼接
ar.toLocaleString() //返回返回每一項(xiàng)調(diào)用toLocaleString方法得到的字符串然后逗號拼接,在數(shù)組中包含類型為對象的項(xiàng)時差異較明顯
ar.valueOf() //返回該數(shù)組
-
ar.join('&') //區(qū)分toString方法,逗號替換為&,分隔符可指定
當(dāng)數(shù)組中某一項(xiàng)為null或者undefined時,轉(zhuǎn)換字符串時用空字符表示
棧方法和隊(duì)列方法
push() //接收任意數(shù)量的參數(shù),并逐個添加到數(shù)組末尾,返回?cái)?shù)組長度
pop() //從數(shù)組中移除最后一項(xiàng),返回移除的項(xiàng)
shift() //移除數(shù)組中第一項(xiàng),返回移除的項(xiàng)
unshift() //接收任意數(shù)量的參數(shù),并添加到數(shù)組開頭,返回?cái)?shù)組長度
重排序方法
ar.reverse() //數(shù)組順序反轉(zhuǎn),在原數(shù)組上進(jìn)行修改
-
ar.sort() //根據(jù)字符串比較來排序而非數(shù)值大小,在原數(shù)組上進(jìn)行修改
sort()
接受一個比較函數(shù),如果第一個參數(shù)應(yīng)該位于第二個參數(shù)之前則返回一個負(fù)數(shù)
操作方法
concat() //傳入數(shù)組或單個項(xiàng),該方法會創(chuàng)建一個原數(shù)組副本并將這些數(shù)組的每一個和單個項(xiàng)都添加到結(jié)果數(shù)組中
slice() //可傳入兩個參數(shù)m、n,表示取數(shù)組的第m項(xiàng)到第n項(xiàng),原數(shù)組不改變,m、n為負(fù)時,加上數(shù)組長度即可
splice(m,n,value) //從第m個項(xiàng)開始刪除n個項(xiàng),并從第m項(xiàng)開始插入變量value,返回一個數(shù)組包含刪除的項(xiàng),原數(shù)組改變
位置方法
indexOf() //接收兩個參數(shù),要查找的項(xiàng)和查找起點(diǎn)位置索引,查找時用===匹配
lastIndexOf //用法同上,逆序查找
迭代方法
5種迭代方法,每個方法接收兩個參數(shù):要在每一項(xiàng)上運(yùn)行的函數(shù)和(可選的)運(yùn)行該函數(shù)的作用域?qū)ο?---影響this值,第一個參數(shù)函數(shù)接受三個參數(shù):數(shù)組項(xiàng)的值、索引、數(shù)組對象本身,這5種方法都不會修改數(shù)組中包含的值。
every() //對數(shù)組中每一項(xiàng)運(yùn)行給定函數(shù),如果該函數(shù)對每一項(xiàng)都返回true則返回true
some() //對數(shù)組中每一項(xiàng)運(yùn)行給定函數(shù),如果該函數(shù)對任一項(xiàng)返回true則返回true
filter() // 對數(shù)組中每一項(xiàng)運(yùn)行給定函數(shù),返回該函數(shù)會返回true的項(xiàng)組成的數(shù)組
forEach() //對數(shù)組中每一項(xiàng)運(yùn)行給定函數(shù),這個方法沒有返回值
map() //對數(shù)組中每一項(xiàng)運(yùn)行給定函數(shù),返回每次函數(shù)調(diào)用的結(jié)果組成的數(shù)組
歸并方法
reduce() //接收兩個參數(shù),一個在每一項(xiàng)上調(diào)用的函數(shù)和(可選的)作為歸并基礎(chǔ)的初始值,第一個參數(shù)函數(shù)接收4個參數(shù),前一個值、當(dāng)前值、項(xiàng)的索引、數(shù)組對象,此方法通常用于求數(shù)組中所有值之和
reduceRight() //遍歷方向同reduce相反
Date類型
創(chuàng)建日期對象
var now = new Date() //傳入?yún)?shù)為1970-1-1距離指定日期的毫秒數(shù)
parse() //此方法可以把表示日期的參數(shù)字符串'2017-(或/)3-28'或'3-28-2017'距離1970-1-1的毫秒數(shù)
-
UTC() //此方法可以把表示日期的參數(shù)(2017,2,28)轉(zhuǎn)化為毫秒數(shù)
Date構(gòu)造函數(shù)會模仿以上兩個函數(shù),如果直接將他們的參數(shù)傳給Date構(gòu)造函數(shù),也會在后臺調(diào)用相應(yīng)的方法parse和UTC。 Date.now() //返回調(diào)用這個方法的日期和時間的毫秒數(shù)
方法
toString() toLocaleString() valueOf() //前兩個返回字符串,最后一個返回毫秒數(shù)
toDateString() //顯示星期幾、月、日、年
toTimeString() //顯示時、分、秒、時區(qū),同時也有toLocaleDateString()和toLocaleTimeString()方法,區(qū)別在于表示格式不同
toUTCString() //顯示格式完整的UTC日期,toGMTString()與該方法等價,目的在于確保向后兼容
getTime()、setTime()、getSections()、setSections()......//日期對象的讀寫
RegExp類型
創(chuàng)建正則表達(dá)式
var expression = /\[bc\]at/i //字面量形式
var expression =new RegExp('\\\[bc\\\]at','i') //所有元字符必須雙重轉(zhuǎn)義,\需要變成\\\\\\\\
每個正則表達(dá)式可以帶有一個或多個標(biāo)志(flags):
- g :全局模式,即模式會被應(yīng)用于所有字符串,而非在發(fā)現(xiàn)第一個匹配項(xiàng)時立即停止。
- i :不區(qū)分大小寫模式,即匹配時忽略大小寫。
- m:多行模式,即在到達(dá)一行文本末尾時還會繼續(xù)查找下一行中是否有與模式匹配的項(xiàng)。
RegExp實(shí)例屬性
global:布爾值,表示是否設(shè)置了 g 標(biāo)志
ignoreCase:布爾值,表示是否設(shè)置了 i 標(biāo)志
multiline:布爾值,表示是否設(shè)置了 m 標(biāo)志
lastIndex:整數(shù),表示開始搜索下一個匹配項(xiàng)的字符位置,從0算起,該值在每次調(diào)用匹配方法時都會用到
source:正則表達(dá)式的字符串表示,按照字面量形式返回
元字符
^ 匹配開頭 /[^\,]+/表示不包含任何逗號的模式 $ 匹配結(jié)尾 . 表示任意字符
\s 匹配空格 \d 匹配數(shù)字 \b 匹配單詞邊界,前導(dǎo)字符在前,單詞在后
* 匹配0個或多個前導(dǎo)字符 + 前導(dǎo)字符至少出現(xiàn)一次 ? 前導(dǎo)字符出現(xiàn)0次或1次
{m,n} 表示至少出現(xiàn)m次,最多出現(xiàn)n次 [0-9a-z] 定義匹配的字符串范圍
RegExp實(shí)例方法
-
exec()
· 專門為捕獲組而設(shè)計(jì),接受一個要應(yīng)用模式的字符串為參數(shù),返回包含第一個匹配項(xiàng)信息(首次匹配到的項(xiàng))的數(shù)組,在沒有匹配項(xiàng)(沒有整個模式的匹配項(xiàng))時返回null。
· 數(shù)組第1項(xiàng)是與整個模式匹配的字符串,其它項(xiàng)是與模式中捕獲組匹配的字符串,數(shù)組還包含兩個額外屬性 input 和 index ,分別為輸入的字符串和整個模式匹配項(xiàng)在字符串中位置
· 當(dāng)模式設(shè)置了 g 標(biāo)志,RegExp實(shí)例(模式)每執(zhí)行一次 exec() 方法,他的的 lastIndex 屬性就會改變一次;若沒有設(shè)置 g ,則 lastIndex 恒等于0
-
test()
· 接受一個字符串參數(shù),模式匹配返回 true,否則 false
-
toString()、toLocaleString()、valueOf()
· 都會像它是字面量形式創(chuàng)建的一樣顯示其字符串表示。
RegExp構(gòu)造函數(shù)屬性
長屬性名 | 短屬性名 | 說明 |
---|---|---|
input |
$_ |
最近一次要匹配的字符串 |
lastMatch |
$& |
最近一次的匹配項(xiàng) |
lastParen |
$+ |
最近一次匹配的捕獲組 |
leftContext |
$ ` |
input 字符串中 lastMatch 之前的字符串 |
rightContext |
$' |
input 字符串中 lastMatch 之后的字符串 |
multiline |
$* |
布爾值,表示是否所有表達(dá)式都使用多行模式 |
$1 / $2 / $3 ··· |
表示一個模式中第n個匹配的捕獲組,在調(diào)用exec、test方法時會被自動填充 |
String類型的match()方法(接受一個Regexp實(shí)例或者字符串作為參數(shù))
-
regexp 沒有 g 標(biāo)志
· match() 方法就只在 stringObject 中執(zhí)行一次匹配,返回一個數(shù)組,其中存放了與它找到的匹配文本有關(guān)的信息。該數(shù)組的第 0 個元素存放的是匹配文本,而其余的元素存放的是與正則表達(dá)式的子表達(dá)式匹配的文本,除了這些常規(guī)的數(shù)組元素之外,返回的數(shù)組還含有兩個對象屬性。index 屬性聲明的是匹配文本的起始字符在 stringObject 中的位置,input 屬性聲明的是對 stringObject 的引用。這里跟exec()方法類似
-
regexp 有 g 標(biāo)志
· match() 方法將執(zhí)行全局檢索,找到 stringObject 中的所有匹配子字符串。若沒有找到任何匹配的子串,則返回 null。如果找到了一個或多個匹配子串,則返回一個數(shù)組。不過全局匹配返回的數(shù)組的內(nèi)容與前者大不相同,它的數(shù)組元素中存放的是 stringObject 中所有的匹配子串(區(qū)分子表達(dá)式),而且也沒有 index 屬性或 input 屬性,regexp實(shí)例的lastIndex屬性恒為0。不同于exec()方法
· 在全局檢索模式下,match() 即不提供與子表達(dá)式匹配的文本的信息,也不聲明每個匹配子串的位置。如果您需要這些全局檢索的信息,可以使用 RegExp.exec()。