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;

? ? ? }

};

屬性的訪問(wèn)一般使用點(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 = [];

訪問(wèn)元素

方括號(hào)[]加索引值,需要說(shuō)明的是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),如果沒(méi)有刪除返回空數(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ù),無(wú)返回值

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ù)組;或者在沒(méi)有匹配的情況下返回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)屬性 ? ? ? ?短屬性 ? ? ? ?說(shuō)明

input ? ? ? ? ? ?$_ ? ? ? ? ? 最近一次要匹配的字符串

lastMatch ? ? ?$& ? ? ? ? ?最近一次的匹配項(xiàng)。

lastParen ? ? ?$+ ? ? ? ? ? 最近一次匹配的捕獲組

leftContext ? ?$、 ? ? ? ? input字符串中l(wèi)astMatch之前的文本

multiline ? ? ? ?$* ? ? ? ? ?布爾值,表示是否所有表達(dá)式都使用多行模式

rightContext ? $' ? ? ? ? Input字符串中l(wèi)astMatch之后的文本

段屬性要通過(guò)[]來(lái)訪問(wèn)。

Function類型

沒(méi)有重載

函數(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è)非繼承而來(lái)的方法:apply、call。

apply:運(yùn)行函數(shù)的作用域,參數(shù)數(shù)組。

call:對(duì)象,其余參數(shù)諸葛列出。

使用call和apply來(lái)擴(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)、正斜杠、問(wèn)號(hào)和井號(hào)

encodeURIComponent 某一段

對(duì)應(yīng)的decodeURI decodeURIComponent

eval

Math對(duì)象

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

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

友情鏈接更多精彩內(nèi)容