Object類型
創(chuàng)建方式:
1.使用new操作符后跟構(gòu)造函數(shù)
var p = new Object();
2.使用對(duì)象字面量扩灯,這種方式不會(huì)調(diào)用構(gòu)造函數(shù)
var p = {
? ? name:"aaa",
? ? getName: function(){
? ? ? ? ? ?return this.name;
? ? ? }
};
屬性的訪問一般使用點(diǎn)表示法羹应,也支持使用方括號(hào)表示法党巾。
Array類型
可以存放任何類型的數(shù)據(jù)。
創(chuàng)建方式:
1.使用構(gòu)造函數(shù)
var c = new Array();
var c = new Array(20);//length = 20
var c = new Array("red", "blue", "green");
var c = Array();//可以省略new
2.字面量
var c = ['red', 'blue', 'green'];
var c = [];
訪問元素
方括號(hào)[]加索引值早敬,需要說明的是length不是只讀的寞埠。
alert(c[0]);
檢測(cè)數(shù)組
isArray(),而不是instanceof通贞。
轉(zhuǎn)換方法
toString()朗若、toLocaleString()、valueOf()
join():示例var x = new Array(10).join("abc");
棧方法
push()昌罩、pop()
隊(duì)列方法
1.shift()哭懈、push()
2.unshift()、pop()
重排序方法
reverse()
sort()
操作方法
concat():連接數(shù)組和參數(shù)茎用,返回新數(shù)組
slice():返回子數(shù)組
splice():刪除遣总,splice(0, 2)刪除前兩個(gè);插入轨功,splice(2, 0, "red", "green")旭斥,位置2插入兩個(gè);替換夯辖,splice(2, 1, "red")琉预,刪除當(dāng)前位置2的項(xiàng),然后從2插入蒿褂。影響原數(shù)組圆米,返回刪除的項(xiàng),如果沒有刪除返回空數(shù)組啄栓。
位置方法
indexOf()娄帖、lastIndexOf()
迭代方法
every:每項(xiàng)都運(yùn)行給定函數(shù),每項(xiàng)返回true昙楚,則返回true近速;
filter:每項(xiàng)運(yùn)行給定函數(shù),返回該函數(shù)返回true的項(xiàng)組成的數(shù)組;
forEach:每項(xiàng)運(yùn)行給定函數(shù)削葱,無返回值
map:每項(xiàng)運(yùn)行函數(shù)奖亚,返回調(diào)用結(jié)果組成的數(shù)組
some:每項(xiàng)運(yùn)行函數(shù),任一項(xiàng)返回true析砸,則返回true
縮小方法
reduce昔字、reduceRight:迭代數(shù)組的所有項(xiàng),然后構(gòu)建一個(gè)最終返回的值首繁。接收兩個(gè)參數(shù):一個(gè)在每一項(xiàng)上調(diào)用的函數(shù)和(可選)作為縮小基礎(chǔ)的初始值作郭。函數(shù)有4個(gè)參數(shù):前一個(gè)值、當(dāng)前值弦疮、項(xiàng)的索引和數(shù)組對(duì)象夹攒。
Date類型
RegExp類型
語(yǔ)法
var ?expression = /pattern/flags;
var pattern = new RegExp("字符串", "g/i/m");
pattern:正則表達(dá)式
flags:g,表示全局模式胁塞;i咏尝,表示不區(qū)分大小寫;m闲先,表示多行模式状土。
需要轉(zhuǎn)義的元字符:([{\^$|)?*+.]}
舉例
字面量模式 ? ? ? ? ? ? ? ? 等價(jià)的字符串
/\[bc\]at/ ? ? ? ? ? ? ? ? ? "\\[bc\\]at"
/\.at/ ? ? ? ? ? ? ? ? ? ? ? ? ?"\\.at"
/name\/age/ ? ? ? ? ? ? ?"name\\/age"
/\d.\d{1, 2}/ ? ? ? ? ? ? ? "\\d.\\d{1,2}"
使用正則表達(dá)式字面量和使用RegExp構(gòu)造函數(shù)創(chuàng)建的正則表達(dá)式不一樣。ECMAScript3中伺糠,正則表達(dá)式字面量始終會(huì)共享一個(gè)RegExp實(shí)例蒙谓,而使用構(gòu)造函數(shù)創(chuàng)建的每一個(gè)新RegExp實(shí)例都是一個(gè)新實(shí)例。
var re = null;
for (int i = 0; i < 10; i++){
? ? re = /cat/g;
? ? re.test("catastrophe");
}
for (int i = 0; i < 10; i++){
? ? re = new RegExp("cat", "g");
? ? re.test("catastrophe");
}
在第一個(gè)循環(huán)中训桶,即使是在循環(huán)體重指定的累驮,但實(shí)際上只為/cat/創(chuàng)建了一個(gè)RegExp實(shí)例。由于實(shí)例屬性不會(huì)重置舵揭,所以在循環(huán)中再次調(diào)用test()方法會(huì)失敗谤专。因?yàn)榈谝淮握{(diào)用test找到了cat,但第二次調(diào)用時(shí)從索引為3的字符開始的午绳,找不到了置侍。由于會(huì)測(cè)試到字符串末尾,所以下一次再調(diào)用時(shí)就又從開頭開始了拦焚。但是第二個(gè)循環(huán)中每次循環(huán)中創(chuàng)建正則表達(dá)式蜡坊,每次都會(huì)返回true。ECMAScript5明確規(guī)定赎败,使用正則表達(dá)式字面量必需像使用RegExp構(gòu)造函數(shù)一樣秕衙,每次都創(chuàng)建新的RegExp實(shí)例。
實(shí)例屬性
global:布爾值僵刮,表示是否設(shè)置了g標(biāo)志据忘;
ignoreCase:布爾值鹦牛,表示是否設(shè)置了i標(biāo)志;
lastIndex:整數(shù)勇吊,表示開始搜索下一個(gè)匹配項(xiàng)的字符位置曼追,從0算起;
multiline:布爾值萧福,表示是否設(shè)置了m標(biāo)志拉鹃;
source:正則表達(dá)式的字符串表示,按照字面量形式而非傳入構(gòu)造函數(shù)中的字符串模式返回鲫忍。
實(shí)例方法
exec():接收一個(gè)參數(shù),即要應(yīng)用模式的字符串钥屈,然后返回包含第一個(gè)匹配項(xiàng)信息的數(shù)組悟民;或者在沒有匹配的情況下返回null。返回的數(shù)組雖然是Array的實(shí)例篷就,但包含兩個(gè)額外的屬性:index和input射亏。其中index表示匹配項(xiàng)在字符串中的位置,input表示應(yīng)用正則表達(dá)式的字符串竭业。在數(shù)組中智润,第一項(xiàng)是與整個(gè)模式匹配的字符串,其他項(xiàng)是與模式中的捕獲組匹配的字符串未辆。
var text = "mom and dad and baby";
var p = /mom( and dad (and baby)?)?/gi;
var matches = p.exec(text);
alert(matches.index);//0
alert(matches.input);//"mom and dad and baby"
alert(matches[0]);//"mom and dad and baby"
alert(matches[1]);//" and dad and baby"
alert(matches[2]);//" and baby"
exec()窟绷,即使在模式中設(shè)置了全局標(biāo)志g,它每次也只會(huì)返回一個(gè)匹配項(xiàng)咐柜。在不設(shè)置全局標(biāo)志的情況下兼蜈,在同一個(gè)字符串上多次調(diào)用exec將始終返回第一個(gè)匹配的信息。而設(shè)置了全局標(biāo)志時(shí)拙友,每次調(diào)用都會(huì)在字符串中繼續(xù)查找新匹配項(xiàng)为狸。
var text = "cat, bat, sat, fat";
var p1 = /.at/;
var m1 = p1.exec(text);
alert(m1.index);// 0
alert(m1[0]);//cat
alert(p1.lastIndex);//0
m1 = p1.exec(text);
alert(m1.index);// 0
alert(m1[0]);//cat
alert(p1.lastIndex);//0
var p2 = /.at/g;
var m2 = p2.exec(text);
alert(m2.index);// 0
alert(m2[0]);//cat
alert(p2.lastIndex);//0
m2 = p2.exec(text);
alert(m2.index);// 5
alert(m2[0]);//bat
alert(p2.lastIndex);//8
test():接受一個(gè)字符串參數(shù)。在模式與該參數(shù)匹配的情況下返回true遗契;否則辐棒,返回false。
構(gòu)造函數(shù)屬性
適用于作用域中的所有正則表達(dá)式牍蜂,并且基于所執(zhí)行的最近一次正則表達(dá)式操作而變化漾根。
長(zhǎng)屬性 ? ? ? ?短屬性 ? ? ? ?說明
input ? ? ? ? ? ?$_ ? ? ? ? ? 最近一次要匹配的字符串
lastMatch ? ? ?$& ? ? ? ? ?最近一次的匹配項(xiàng)。
lastParen ? ? ?$+ ? ? ? ? ? 最近一次匹配的捕獲組
leftContext ? ?$捷兰、 ? ? ? ? input字符串中l(wèi)astMatch之前的文本
multiline ? ? ? ?$* ? ? ? ? ?布爾值立叛,表示是否所有表達(dá)式都使用多行模式
rightContext ? $' ? ? ? ? Input字符串中l(wèi)astMatch之后的文本
段屬性要通過[]來訪問。
Function類型
沒有重載
函數(shù)聲明和函數(shù)表達(dá)式
解析器在向執(zhí)行環(huán)境中加載數(shù)據(jù)時(shí)贡茅,對(duì)函數(shù)聲明和函數(shù)表達(dá)式并非一視同仁秘蛇。解析器會(huì)率先讀取函數(shù)聲明其做,并使其在執(zhí)行任何代碼之前可用;至于函數(shù)表達(dá)式赁还,則必須等到解析器執(zhí)行到他所在的代碼行妖泄,才會(huì)真正被解釋執(zhí)行。即使聲明函數(shù)的代碼在調(diào)用它的代碼后面艘策,也能把函數(shù)聲明提升到頂部蹈胡。
函數(shù)內(nèi)部屬性
arguments、this朋蔫、calle
函數(shù)屬性和方法
length罚渐、prototype
每個(gè)函數(shù)包含兩個(gè)非繼承而來的方法:apply、call驯妄。
apply:運(yùn)行函數(shù)的作用域荷并,參數(shù)數(shù)組。
call:對(duì)象青扔,其余參數(shù)諸葛列出源织。
使用call和apply來擴(kuò)充作用域的最大好處,就是對(duì)象不需要與方法有任何耦合關(guān)系微猖。
ECMAScript5中還定義了一個(gè)方法bind谈息。這個(gè)方法會(huì)創(chuàng)建一個(gè)函數(shù)的實(shí)例,其this值會(huì)被綁定到傳給bind函數(shù)的值凛剥。
基本包裝類型
Boolean侠仇、Number、String当悔。
引用類型與基本包裝類型的主要區(qū)別就是對(duì)象的生存期傅瞻。使用new操作符創(chuàng)建的引用類型實(shí)例,在執(zhí)行流離開當(dāng)前作用域之前都一直保存在內(nèi)存中盲憎。而自動(dòng)創(chuàng)建的基本包裝類型的對(duì)象嗅骄,則只存在于一行代碼的執(zhí)行瞬間,然后立即被銷毀饼疙。這以為著我們不能再運(yùn)行時(shí)為基本類型值添加屬性和方法溺森。
String類型
字符方法
charAt、charCodeAt
字符串操作方法
concat ?slice ?substr substring
字符串位置方法
indexOf lastIndexOf
trim
字符串大小寫轉(zhuǎn)換方法
toLowerCase ?toUpperCase
字符串模式匹配方法
match 本質(zhì)上同exec
search 始終是從字符串開頭向后查找模式
replace
split
HTML方法
anchor
big
bold
fixed
fontcolor
fontsize
italics
link
small
strike
sub
sup
單體內(nèi)置對(duì)象
Global對(duì)象
URI編碼方法
encodeURI 整個(gè)URI 不會(huì)對(duì)本身屬于URI的特殊字符進(jìn)行編碼窑眯,如冒號(hào)屏积、正斜杠、問號(hào)和井號(hào)
encodeURIComponent 某一段
對(duì)應(yīng)的decodeURI decodeURIComponent
eval
Math對(duì)象