JavaScript引用類型

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ì)象

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末磅甩,一起剝皮案震驚了整個(gè)濱河市炊林,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌卷要,老刑警劉巖渣聚,帶你破解...
    沈念sama閱讀 216,843評(píng)論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件独榴,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡奕枝,警方通過查閱死者的電腦和手機(jī)棺榔,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,538評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來隘道,“玉大人症歇,你說我怎么就攤上這事√饭#” “怎么了忘晤?”我有些...
    開封第一講書人閱讀 163,187評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)激捏。 經(jīng)常有香客問我德频,道長(zhǎng),這世上最難降的妖魔是什么缩幸? 我笑而不...
    開封第一講書人閱讀 58,264評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮竞思,結(jié)果婚禮上表谊,老公的妹妹穿的比我還像新娘。我一直安慰自己盖喷,他們只是感情好爆办,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,289評(píng)論 6 390
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著课梳,像睡著了一般距辆。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上暮刃,一...
    開封第一講書人閱讀 51,231評(píng)論 1 299
  • 那天跨算,我揣著相機(jī)與錄音,去河邊找鬼椭懊。 笑死诸蚕,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的氧猬。 我是一名探鬼主播背犯,決...
    沈念sama閱讀 40,116評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼盅抚!你這毒婦竟也來了漠魏?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,945評(píng)論 0 275
  • 序言:老撾萬榮一對(duì)情侶失蹤妄均,失蹤者是張志新(化名)和其女友劉穎柱锹,沒想到半個(gè)月后哪自,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,367評(píng)論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡奕纫,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,581評(píng)論 2 333
  • 正文 我和宋清朗相戀三年提陶,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片匹层。...
    茶點(diǎn)故事閱讀 39,754評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡隙笆,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出升筏,到底是詐尸還是另有隱情撑柔,我是刑警寧澤,帶...
    沈念sama閱讀 35,458評(píng)論 5 344
  • 正文 年R本政府宣布您访,位于F島的核電站铅忿,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏灵汪。R本人自食惡果不足惜檀训,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,068評(píng)論 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望享言。 院中可真熱鬧峻凫,春花似錦、人聲如沸览露。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,692評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)差牛。三九已至命锄,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間偏化,已是汗流浹背脐恩。 一陣腳步聲響...
    開封第一講書人閱讀 32,842評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留夹孔,地道東北人被盈。 一個(gè)月前我還...
    沈念sama閱讀 47,797評(píng)論 2 369
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像搭伤,于是被迫代替她去往敵國(guó)和親只怎。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,654評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • 基本包裝類型 為了便于操作基本類型值怜俐,ECMAScript還提供了3個(gè)特殊的引用類型:Boolean身堡,Number...
    胖胖冰閱讀 218評(píng)論 0 0
  • ECMAScript 通過RegExp 類型來支持正則表達(dá)式。使用下面類似Perl的語(yǔ)法拍鲤,就可以創(chuàng)建一個(gè)正則表達(dá)式...
    shanruopeng閱讀 216評(píng)論 0 1
  • 第5章 引用類型(返回首頁(yè)) 本章內(nèi)容 使用對(duì)象 創(chuàng)建并操作數(shù)組 理解基本的JavaScript類型 使用基本類型...
    大學(xué)一百閱讀 3,233評(píng)論 0 4
  • 本章內(nèi)容 使用對(duì)象 創(chuàng)建并操作數(shù)組 理解基本的 JavaScript 類型 使用基本類型和基本包裝類型 引用類型的...
    悶油瓶小張閱讀 681評(píng)論 0 0
  • RegExp類型 ECMAScript通過RegExp類型來支持正則表達(dá)式贴谎。使用如下語(yǔ)法汞扎,可以創(chuàng)建一個(gè)正則表達(dá)式。...
    胖胖冰閱讀 407評(píng)論 0 2