成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

JS高程讀書筆記--第五章引用類型

anRui / 3253人閱讀

摘要:高程讀書筆記第五章類型創(chuàng)建實(shí)例的方式有兩種。第一種是使用操作符后跟構(gòu)造函數(shù),另一種方式是使用對(duì)象字面量表示法。

JS高程讀書筆記--第五章 Object類型

創(chuàng)建Object實(shí)例的方式有兩種。第一種是使用new操作符后跟Object構(gòu)造函數(shù),另一種方式是使用對(duì)象字面量表示法。

在通過對(duì)象字面量定義對(duì)象時(shí),實(shí)際上不會(huì)調(diào)用Object構(gòu)造函數(shù)

訪問對(duì)象屬性時(shí)可以使用點(diǎn)表示法和方括號(hào)表示法。使用方括號(hào)語法時(shí),應(yīng)該要將訪問的屬性以字符串的形式放在方括號(hào)中。

方括號(hào)表示法的優(yōu)點(diǎn)是可以通過變量來訪問屬性。

Array類型

ECMAScript數(shù)組的每一項(xiàng)可以保存任何類型的數(shù)據(jù),并它的大小是可以動(dòng)態(tài)調(diào)整的

創(chuàng)建數(shù)組

使用Array構(gòu)造函數(shù)

給構(gòu)造函數(shù)傳的值是數(shù)值,則會(huì)按照該數(shù)值創(chuàng)建包含給定項(xiàng)數(shù)的數(shù)組;

如果傳遞的是其他類型的參數(shù),則會(huì)創(chuàng)建包含那個(gè)值得只有一項(xiàng)的數(shù)組;

使用數(shù)組字面量表示法

數(shù)組的length屬性不是只讀的,通過設(shè)置這個(gè)屬性可以從數(shù)組的末尾移除項(xiàng)或向數(shù)組中添加新項(xiàng)。如果將其length屬性設(shè)置為大于數(shù)組項(xiàng)數(shù)的值,則新增的每一項(xiàng)都會(huì)取得undefined值。

檢測(cè)數(shù)組

instanceof :value instanceof Array;它的問題在于它假定只有一個(gè)全局執(zhí)行環(huán)境

ES5新增了一個(gè)Array.isArray()方法

constructor屬性:arr.constructor;

轉(zhuǎn)換數(shù)組

toString():調(diào)用數(shù)組的toString()方法會(huì)返回由數(shù)組中每個(gè)值得字符串形式拼接而成的一個(gè)以逗號(hào)分隔的字符串;

valueOf():返回的還是數(shù)組;

join():只接受一個(gè)參數(shù),即用作分隔符的字符串,如果不給join()方法傳入任何值,或者給它傳入undefined,則使用逗號(hào)作為分隔符;

如果數(shù)組中的某一項(xiàng)的值是null或者undefined,那么該值在join()、toLocalString()toString()方法返回的結(jié)果中以空字符串表示。

棧方法

push():這個(gè)方法可以接收任何數(shù)量的參數(shù),把它們逐個(gè)添加到數(shù)組末尾,并返回修改后數(shù)組的長(zhǎng)度;

pop():這個(gè)方法從數(shù)組末尾移除最后一項(xiàng),減少數(shù)組的length值,然后返回溢出的項(xiàng);

隊(duì)列方法

shift():這個(gè)操作能夠移除數(shù)組中的第一項(xiàng)返回該項(xiàng)

unshift():它能在數(shù)組前端添加任意個(gè)項(xiàng)并返回新數(shù)組的長(zhǎng)度;

重排序方法

reverse():這個(gè)方法會(huì)反轉(zhuǎn)數(shù)組項(xiàng)的順序;

sort():這個(gè)方法會(huì)調(diào)用每個(gè)數(shù)組項(xiàng)的toString()轉(zhuǎn)型方法,然后比較得到的字符串對(duì)應(yīng)的ASCII值,以確定如何排序,即使每一項(xiàng)都是數(shù)值;

sort()方法還可以接收一個(gè)比較函數(shù)作為參數(shù)。這個(gè)比較函數(shù)接收兩個(gè)參數(shù),如果第一個(gè)參數(shù)應(yīng)該位于第二個(gè)之前則返回一個(gè)負(fù)數(shù),如果兩個(gè)參數(shù)相等則返回0,如果第一個(gè)參數(shù)應(yīng)該位于第二個(gè)之后則返回一個(gè)整數(shù);

reverse()sort()方法的返回值是經(jīng)過排序后的數(shù)組

操作方法

concat():這個(gè)方法會(huì)先創(chuàng)建當(dāng)前數(shù)組一個(gè)副本,然后將接收到的參數(shù)添加到這個(gè)副本的末尾,然后返回新構(gòu)建的數(shù)組。

在沒有給concat()方法傳遞參數(shù)的情況下,它只是復(fù)制當(dāng)前數(shù)組并返回副本。

如果傳遞給concat()方法的是一或多個(gè)數(shù)組,則該方法會(huì)將這些數(shù)組中的每一項(xiàng)都添加到結(jié)果數(shù)組中。

如果傳遞的值不是數(shù)組,這些值就會(huì)被簡(jiǎn)單地添加到結(jié)果數(shù)組的末尾

這個(gè)方法不會(huì)影響原數(shù)組

slice():這個(gè)方法可以接收一或兩個(gè)參數(shù),即要返回項(xiàng)的起始和結(jié)束位置。

在只有一個(gè)參數(shù)的情況下,slice()方法返回從該參數(shù)指定位置開始到當(dāng)前數(shù)組末尾的所有項(xiàng);

如果有兩個(gè)參數(shù),該方法返回起始和結(jié)束位置之前的項(xiàng),但不包括結(jié)束位置的項(xiàng)

這個(gè)方法不會(huì)影響原數(shù)組

splice():這個(gè)方法算是最強(qiáng)大的數(shù)組方法,主要用途是向數(shù)組的中部插入項(xiàng)。這個(gè)方法會(huì)影響原數(shù)組,它始終都會(huì)返回一個(gè)數(shù)組,該數(shù)組中包含從原始數(shù)組中刪除的項(xiàng)

刪除:可以刪除任意數(shù)量的項(xiàng),只需指定2個(gè)參數(shù):要?jiǎng)h除的第一項(xiàng)的位置要?jiǎng)h除的項(xiàng)數(shù);

插入:可以向指定位置插入任意數(shù)量的項(xiàng),只需提供3個(gè)參數(shù):起始位置、0(要?jiǎng)h除的項(xiàng)數(shù))要插入的項(xiàng)。如果要插入多個(gè)項(xiàng),可以再傳入第四、第五,以至任意多個(gè)項(xiàng);

替換:可以向指定位置插入任意數(shù)量的項(xiàng),且同時(shí)刪除任意數(shù)量的項(xiàng),只需指定3個(gè)參數(shù):起始位置、要?jiǎng)h除的項(xiàng)數(shù)和要插入的任意數(shù)量的項(xiàng)。插入的項(xiàng)不必與刪除的項(xiàng)相等;

位置方法

ES5為數(shù)組實(shí)例添加了兩個(gè)位置方法:indexOf()lastIndexOf()。這兩個(gè)方法都接收兩個(gè)參數(shù):要查找的項(xiàng)和(可選)表示查找起點(diǎn)位置的索引。其中indexOf()方法從數(shù)組的開頭(位置0)開始查找,lastIndexOf()方法則從數(shù)組的末尾開始向前查找。

這兩個(gè)方法都返回要查找的項(xiàng)在數(shù)組中的位置,或者在沒找到的情況下返回-1

迭代方法

ES5為數(shù)組定義了5個(gè)迭代方法。每個(gè)方法都接受兩個(gè)參數(shù):要在每一項(xiàng)上運(yùn)行的函數(shù)和(可選)運(yùn)行該函數(shù)的作用域?qū)ο?-影響this的值。傳入這些方法中的函數(shù)會(huì)接收三個(gè)參數(shù):數(shù)組項(xiàng)的值(item)該項(xiàng)在數(shù)組中的位置(index)、和數(shù)組本身對(duì)象(array),以下方法都不會(huì)修改數(shù)組中的包含的值。

every():對(duì)數(shù)組中的每一項(xiàng)運(yùn)行給定函數(shù),如果該函數(shù)對(duì)每一項(xiàng)都返回true,則返回true;

filter():對(duì)數(shù)組中的每一項(xiàng)運(yùn)行給定函數(shù),返回該函數(shù)會(huì)返回true的項(xiàng)組成的數(shù)組;

forEach():對(duì)數(shù)組中的每一項(xiàng)運(yùn)行給定的函數(shù)。這個(gè)方法沒有返回值,本質(zhì)上和for循環(huán)一樣;

map(): 對(duì)數(shù)組中的每一項(xiàng)運(yùn)行給定的函數(shù),返回每次函數(shù)調(diào)用的結(jié)果組成的數(shù)組;

some():對(duì)數(shù)組中的每一項(xiàng)運(yùn)行給定函數(shù),如果該函數(shù)對(duì)任一項(xiàng)返回true,則返回true。

歸并方法

ES5新增了兩個(gè)歸并數(shù)組的方法:reduce()reduceRight()。這兩個(gè)方法都會(huì)迭代數(shù)組的所有項(xiàng),然后構(gòu)建一個(gè)最終返回的值。其中,reduce()方法從數(shù)組的第一項(xiàng)開始,逐個(gè)遍歷到最后。而reduceRight()則從數(shù)組的最后一項(xiàng)開始,向前遍歷到第一項(xiàng)。

這兩個(gè)方法都接收兩個(gè)參數(shù):一個(gè)在每一項(xiàng)上調(diào)用的函數(shù)和(可選)作為歸并基礎(chǔ)的初始值

傳入給reduce()reduceRight()的函數(shù)接收4個(gè)參數(shù):前一個(gè)值、當(dāng)前值、項(xiàng)的索引和數(shù)組對(duì)象。

var values = [1,2,3,4,5];
var sum = values.reduce(function(prev,cur,index,array){
    return prev+cur;
});
console.log(sum);    // 15
Date類型

要?jiǎng)?chuàng)建一個(gè)日期對(duì)象,使用new操作符和Date構(gòu)造函數(shù)即可;

Date.parse()方法接受一個(gè)表示日期的字符串參數(shù),然后嘗試根據(jù)這個(gè)字符串返回相應(yīng)日期的毫秒數(shù),如果直接將表示日期的字符串傳遞給Date構(gòu)造函數(shù),也會(huì)在后臺(tái)調(diào)用Date.parse()

Date類型也重寫了toLocaleString()、toString()valueOf()方法:

toLocaleString()會(huì)按照與瀏覽器設(shè)置的地區(qū)相適應(yīng)的格式返回日期和時(shí)間;

toString()方法則通常返回帶有時(shí)區(qū)信息的日期和時(shí)間;

valueof()方法根本不返回字符串,而是返回日期的毫秒表示;

RegExp類型

ECMAScript通過RegExp類型來支持正則表達(dá)式。每個(gè)正則表達(dá)式都可帶有一個(gè)或多個(gè)標(biāo)志,用以表明正則表達(dá)式的行為:

g:表示全局模式,即模式將被應(yīng)用于所有字符串,而非在發(fā)現(xiàn)第一個(gè)匹配項(xiàng)時(shí)立即停止;

i:表示不區(qū)分大小寫模式,即在確定匹配項(xiàng)時(shí)忽略模式與字符串的大小寫;

m:表示多行模式,即在到達(dá)一行文本末尾時(shí)還會(huì)繼續(xù)查找下一行中是否存在于模式匹配的項(xiàng)

模式中所有的元字符都必須轉(zhuǎn)義:( [ ^ $ | ) ? * + . ] } )

可以使用RegExp構(gòu)造函數(shù),它接收兩個(gè)參數(shù):一個(gè)是要匹配的字符串模式,另一個(gè)是可選的標(biāo)志字符串;

RegExp對(duì)象的主要方法是exec(),該方法專門為捕獲組而設(shè)計(jì)的

exec()接收一個(gè)參數(shù),即要應(yīng)用模式的字符串,然后返回包含第一個(gè)匹配項(xiàng)信息的數(shù)組;或者在沒有匹配項(xiàng)信息的情況下返回null

返回的數(shù)組雖然是Array實(shí)例,但也包含兩個(gè)額外的屬性:index和input。其中,index表示匹配項(xiàng)在字符串中的位置,而input表示應(yīng)用正則表達(dá)式的字符串;

在數(shù)組中,第一項(xiàng)是與整個(gè)模式匹配的字符串,其他項(xiàng)是與模式中的捕獲組匹配的字符串(如果模式中沒有捕獲組,則該數(shù)組只包含一項(xiàng));

即使在模式中設(shè)置了全局標(biāo)志g,它每次也只會(huì)返回一個(gè)匹配項(xiàng)。在不設(shè)置全局標(biāo)志的情況下,在同一個(gè)字符串上多次調(diào)用exec()將始終返回第一個(gè)匹配項(xiàng)的信息。而在設(shè)置全局標(biāo)志的情況下,每次調(diào)用exec()則都會(huì)在字符串中繼續(xù)查找新匹配項(xiàng)。

正則表達(dá)式的第二個(gè)方法是test(),它接收一個(gè)字符串參數(shù)。在模式與該參數(shù)匹配的情況下返回true;否則返回false。它經(jīng)常被用于if語句

Function類型

函數(shù)實(shí)際上是對(duì)象,每個(gè)函數(shù)都是Function類型的實(shí)例,而且都與其他引用類型一樣具有屬性和方法。由于函數(shù)是對(duì)象,因此函數(shù)名實(shí)際上也是一個(gè)指向函數(shù)對(duì)象的指針,不會(huì)與某個(gè)函數(shù)綁定。

函數(shù)定義

函數(shù)通常是使用函數(shù)聲明語法定義的:

function sum(num1,num2){
    return num1 + num2;
}

與使用函數(shù)表達(dá)式定義函數(shù)的方式幾乎相差無幾

var sum = function (num1,num2){
    return num1 + num2;
};

解析器會(huì)率先讀取函數(shù)聲明,并使其在執(zhí)行任何代碼之前可用(可以訪問);至于函數(shù)表達(dá)式,則必須等到解析器執(zhí)行到它所在的代碼行,才會(huì)真正被解釋執(zhí)行。

最后一種函數(shù)定義的方式是使用Function構(gòu)造函數(shù)。Function構(gòu)造函數(shù)可以接收任意數(shù)量的參數(shù),但最后一個(gè)參數(shù)始終都被看成是函數(shù)體,而前面的參數(shù)則枚舉出了新函數(shù)的參數(shù)

var sum = new Function("num1","num2","return num1 + num2"); // 不推薦

從技術(shù)角度講,這是一個(gè)函數(shù)表達(dá)式。但是,我們不推薦使用這種方式來定義函數(shù),因?yàn)檫@種語法會(huì)導(dǎo)致解析兩次代碼(第一次是解析常規(guī)ECMAScript代碼,第二次是解析傳入構(gòu)造函數(shù)中的字符串),從而影響性能。

注:使用不帶圓括號(hào)的函數(shù)名是訪問函數(shù)指針,而非調(diào)用函數(shù)

因?yàn)镋CMAScript中的函數(shù)名本身就是變量,所以函數(shù)也可以作為來使用。

函數(shù)內(nèi)部屬性

在函數(shù)內(nèi)部,有兩個(gè)特殊的對(duì)象:arguments和this。其中arguments是一個(gè)類數(shù)組對(duì)象,包含著傳入函數(shù)中的所有參數(shù)。this引用的是函數(shù)據(jù)以執(zhí)行的環(huán)境對(duì)象--或者也可以說是this值(當(dāng)在網(wǎng)頁的全局作用域中調(diào)用函數(shù)時(shí),this對(duì)象引用的就是window)

callee

雖然arguments的主要用途是保存函數(shù)參數(shù),但這個(gè)對(duì)象還有一個(gè)名叫callee的屬性,該屬性是一個(gè)指針,指向擁有這個(gè)arguments對(duì)象的函數(shù)

function rec(num){
    if(num<=1){
        return 1;
    }else{
        return num * arguments.callee(num-1)
    }
}

當(dāng)函數(shù)在嚴(yán)格模式下運(yùn)行時(shí),訪問arguments.callee會(huì)導(dǎo)致錯(cuò)誤

caller

這個(gè)屬性中保存著調(diào)用當(dāng)前函數(shù)的函數(shù)的引用,如果實(shí)在全局作用域中調(diào)用當(dāng)前函數(shù),它的值為null。

在嚴(yán)格模式下訪問arguments.caller屬性也會(huì)導(dǎo)致錯(cuò)誤,而在非嚴(yán)格模式下這個(gè)屬性始終是undefined

嚴(yán)格模式下不能為函數(shù)的caller屬性賦值,否則會(huì)導(dǎo)致錯(cuò)誤

函數(shù)的屬性和方法

ECMAScript中的函數(shù)是對(duì)象,因此函數(shù)也有屬性和方法

屬性

每個(gè)函數(shù)都包含兩個(gè)屬性:length和prototype

length屬性表示函數(shù)希望接收的命名參數(shù)的個(gè)數(shù);

prototype是保存它們所有實(shí)例方法的真正所在。prototype屬性是不可枚舉的,因此使用for-in無法實(shí)現(xiàn);

方法

每個(gè)函數(shù)都包含兩個(gè)非繼承而來的方法:apply()call()。這兩個(gè)方法的用途都是在特定的作用域中調(diào)用函數(shù),實(shí)際上等于設(shè)置函數(shù)體內(nèi)this對(duì)象的值

apply()方法接收兩個(gè)參數(shù):一個(gè)是在其中運(yùn)行函數(shù)的作用域,另一個(gè)是參數(shù)數(shù)組。其中第二個(gè)參數(shù)可以是Array的實(shí)例,也可以是arguments對(duì)象。

call()方法與apply()方法的作用相同,它們的區(qū)別僅在于接收參數(shù)的方式不同,傳遞給函數(shù)的參數(shù)必須逐個(gè)列舉出來;

ES5定義了bind()方法會(huì)創(chuàng)建個(gè)函數(shù)的實(shí)例,其this值會(huì)被綁定到傳給bind()函數(shù)的值;

call()apply()真正強(qiáng)大的地方是能夠擴(kuò)充函數(shù)賴以運(yùn)行的作用域,最大的好處就是對(duì)象不需要與方法有任何耦合關(guān)系。

基本包裝類型

每當(dāng)讀取一個(gè)基本類型值得時(shí)候,后臺(tái)就會(huì)創(chuàng)建一個(gè)對(duì)應(yīng)的基本包裝類型的對(duì)象,從而讓我們能夠調(diào)用一些方法來操作這些數(shù)據(jù)。

引用類型和基本包裝類型的主要區(qū)別就是對(duì)象的生存期

使用new操作符創(chuàng)建的引用類型的實(shí)例,在執(zhí)行流離開當(dāng)前作用域之前都一直保存在內(nèi)存中;

自動(dòng)創(chuàng)建的基本包裝類型的對(duì)象,只存在于一行代碼的執(zhí)行瞬間,然后立即被銷毀,這意味著我們不能在運(yùn)行的時(shí)候?yàn)榛绢愋椭堤砑訉傩院头椒ǎ?/p>

可以顯式的調(diào)用Boolean、Number和String來創(chuàng)建基本包裝類型的對(duì)象

這種做法很容易分不清處理基本類型還是引用類型。對(duì)基本包裝類型的實(shí)例調(diào)用typeof會(huì)返回"object",而且所有基本包裝類型的對(duì)象都會(huì)被轉(zhuǎn)換為布爾值true;

使用new調(diào)用基本包裝類型的構(gòu)造函數(shù),與直接調(diào)用同名的轉(zhuǎn)型函數(shù)是不一樣的;

Boolean類型

Boolean類型的實(shí)例重寫了valueOf()方法,返回基本類型值true或false;重寫了toString()方法,返回字符串"true"和"false";

使用instanceof()操作符測(cè)試Boolean對(duì)象會(huì)返回true;

布爾表達(dá)式中的所有對(duì)象都會(huì)被轉(zhuǎn)換為true;

建議永遠(yuǎn)都不要使用Boolean對(duì)象

Number類型

valueOf():返回對(duì)象表示的基本類型的數(shù)值;

toString():返回字符串形式的數(shù)值,可以為其傳遞一個(gè)表示基數(shù)的參數(shù),告訴它返回幾進(jìn)制數(shù)值的字符串形式;

toFixed():會(huì)按照指定的小數(shù)位返回?cái)?shù)值的字符串表示,這個(gè)方法很適合處理貨幣值;

toExponential():該方法返回以指數(shù)表示法(也稱e表示法)表示的數(shù)值的字符串形式;

toPrecision():這個(gè)方法會(huì)根據(jù)要處理的數(shù)值決定到底是調(diào)用toFixed()還是toExponential(),這三個(gè)方法都可以通過向上向下舍入,做到以最準(zhǔn)確的形式來表示帶有正確小數(shù)位的值。這個(gè)方法接收一個(gè)參數(shù),即表示數(shù)值的所有數(shù)字的位數(shù)(不包括指數(shù)部分)

String類型

String類型的每一個(gè)實(shí)例都有一個(gè)length屬性,表示字符串中包含多少個(gè)字符。即使字符串中包含雙字節(jié)字符(不是占一個(gè)字節(jié)的ASCII字符),每個(gè)字符也仍然算一個(gè)字符。

字符方法

兩個(gè)用于訪問字符串中特定字符的方法是:charAt()charCodeAt()。這兩個(gè)方法都接收一個(gè)參數(shù),即基于0的字符位置

charAt():這個(gè)方法以單字符串的形式返回給定位置的那個(gè)字符;

charCodeAt():這個(gè)方法以字符編碼的形式返回給定位置的那個(gè)字符;

ES5中還定義了,可以使用方括號(hào)加數(shù)字索引([1])來訪問字符串中特定位置;

字符串操作方法

concat():用于將一個(gè)或多個(gè)字符串拼接起來,返回拼接得到的新字符串,它不會(huì)影響原字符串;

ES還提供了3個(gè)基于子字符串創(chuàng)建新字符串的方法:slice()、substr()substring()。

這三個(gè)方法都會(huì)返回被操作字符串的一個(gè)子字符串,而且也都接受一或兩個(gè)參數(shù),第一個(gè)參數(shù)指定字符串的開始位置

slice()substring()的第二個(gè)參數(shù)指定的是子字符串最后一個(gè)字符后面的位置;

substr()的第二個(gè)參數(shù)指定的是返回的字符個(gè)數(shù);

這三個(gè)方法都不會(huì)影響原字符串

在給這些方法傳遞負(fù)值的情況下,slice()方法會(huì)將傳入的負(fù)值與字符串的長(zhǎng)度相加,substr()方法將負(fù)的第一個(gè)參數(shù)加上字符串的長(zhǎng)度,而將第二個(gè)參數(shù)轉(zhuǎn)換為0,substring()方法會(huì)把所有負(fù)值參數(shù)都轉(zhuǎn)換為0;

字符串位置方法

有兩個(gè)可以從字符串中查找子字符串的方法:indexOf()lastIndexOf()。這兩個(gè)方法都是從一個(gè)字符串中搜索給定的子字符串,然后返子字符串的位置(如果沒有找到該子字符串,則返回-1

indexOf()方法從字符串的開頭向后搜索子字符串,而lastIndexOf()方法是從字符串的末尾向前搜索子字符串;

這兩個(gè)方法都可以接收第二個(gè)參數(shù),表示從字符串中的哪個(gè)位置開始搜索;

trim()

ES5為所有字符串定義了trim()方法。這個(gè)方法會(huì)創(chuàng)建一個(gè)字符串的副本,刪除前置及后綴的所有空格,然后返回結(jié)果。
由于trim()返回的是字符串的副本,所以不影響原始字符串

字符串大小寫轉(zhuǎn)換方法

ECMAScript設(shè)計(jì)大小寫轉(zhuǎn)換的方法有四個(gè)toLowerCase、toLocaleLowerCase()toUpperCase()toLacleUpperCase()。其中toLowerCasetoUpperCase()是兩個(gè)經(jīng)典方法,而toLocaleLowerCase()toLacleUpperCase()方法則是針對(duì)特定地區(qū)的實(shí)現(xiàn)。

字符串的模式匹配方法

match():在字符串上調(diào)用這個(gè)方法本質(zhì)上與調(diào)用RegExp的exec()的方法相同。它只接受一個(gè)參數(shù),要么是一個(gè)正則表達(dá)式,要么是一個(gè)RegExp對(duì)象;

search():這個(gè)方法的唯一參數(shù)與match()方法的參數(shù)相同。這個(gè)方法返回字符串中第一個(gè)匹配項(xiàng)的索引,如果沒有找到匹配項(xiàng)則返回-1,而且search()方法始終是從字符串開通向后查找模式;

replace():這個(gè)方法接收兩個(gè)參數(shù),第一個(gè)參數(shù)可以是一個(gè)RegExp對(duì)象或者一個(gè)字符串(這個(gè)字符串不會(huì)被轉(zhuǎn)換成正則表達(dá)式),第二個(gè)參數(shù)可以是一個(gè)字符串或者一個(gè)函數(shù)。

如果第一個(gè)參數(shù)是字符串,那么只會(huì)替換第一個(gè)子字符串,想要替換所有的子字符串唯一的方法就是提供一個(gè)正則表達(dá)式,而且要指定全局(g)標(biāo)志;

這個(gè)方法的第二個(gè)參數(shù)也可以使一個(gè)函數(shù)。在只有一個(gè)匹配項(xiàng)的情況下,會(huì)向這個(gè)函數(shù)傳遞3個(gè)參數(shù):模式的匹配項(xiàng)、模式匹配項(xiàng)在字符串中的位置和原始字符串;

這個(gè)方法不會(huì)影響原字符串;

split():這個(gè)方法可以基于指定的分隔符將一個(gè)字符串分割成多個(gè)子字符串,并將結(jié)果放在一個(gè)數(shù)組中,分隔符可以是字符串,也可以是一個(gè)RegExp對(duì)象。split()方法可以接受可選的第二個(gè)參數(shù),用于指定數(shù)組的大小,以便確保返回的數(shù)組不會(huì)超過既定大小。

localeCompare()

這個(gè)方法比較兩個(gè)字符串,并返回下列值中的一個(gè):

如果字符串在字母表中應(yīng)該排在字符串參數(shù)之前,則返回一個(gè)負(fù)數(shù)(大多情況下是-1);

如果字符串等于字符串參數(shù),則返回0;

如果字符串在字母表中應(yīng)該排在字符串參數(shù)之后,則返回一個(gè)正數(shù)(大多情況下是1);

formCharCode()

String構(gòu)造函數(shù)本身還有一個(gè)靜態(tài)方法:fromCharCode()。這個(gè)方法的任務(wù)是接收一或多個(gè)字符編碼,然后將它們轉(zhuǎn)換成一個(gè)字符串。

單體內(nèi)置對(duì)象

由ECMAScript實(shí)現(xiàn)提供的,不依賴于宿主環(huán)境的對(duì)象,這些對(duì)象在ECMAScript程序執(zhí)行之前就已經(jīng)存在了

Global對(duì)象

所有在全局作用域中定義的屬性和函數(shù),都是Global對(duì)象的屬性。

URI編碼

Global對(duì)象的encodeURI()encodeURIComponent()方法可以對(duì)URI進(jìn)行編碼,以便發(fā)送給瀏覽器

encodeURI()主要用于整個(gè)URI,而encodeURIComponent()主要用于對(duì)URI中的某一段進(jìn)行編碼;

它們的主要區(qū)別在于,encodeURI()不會(huì)對(duì)本身屬于URI的特殊字符進(jìn)行編碼,例如冒號(hào)、正斜杠、問號(hào)和井字號(hào);而encodeURIComponent()則會(huì)對(duì)它發(fā)現(xiàn)的任何非標(biāo)準(zhǔn)字符進(jìn)行編碼;

decodeURI()只能對(duì)使用encodeURI()替換的字符進(jìn)行解碼,同樣的decodeURIComponent()能夠解碼使用encodeURIComponent()編碼的所有字符,即它可以解碼任何特殊字符的編碼;

eval()方法

這個(gè)方法就像一個(gè)完整的ECMAScript解析器。

它只接收一個(gè)參數(shù),即要執(zhí)行的ECMAScript字符串;

通過eval()執(zhí)行的代碼被認(rèn)為是包含該次調(diào)用的執(zhí)行環(huán)境的一部分,因此被執(zhí)行的代碼具有與該執(zhí)行環(huán)境相同的作用域鏈;

eval()中創(chuàng)建的任何變量都不會(huì)被提升

嚴(yán)格模式下,在外部訪問不到eval()中創(chuàng)建的任何變量或函數(shù)

Global對(duì)象的屬性

特殊的值undefined、NaN以及Infinity都是Global對(duì)象的屬性;

所有原生引用類型的構(gòu)造函數(shù),也都是Global對(duì)象的屬性;

ES5明確禁止給undefined、NaN和Infinity賦值,這樣做即使在非嚴(yán)格模式下也會(huì)導(dǎo)致錯(cuò)誤;

window對(duì)象

Web瀏覽器將這個(gè)全局對(duì)象作為window對(duì)象的一部分加以實(shí)現(xiàn)。在全局作用域中聲明的所有變量和函數(shù),就都成為了window對(duì)象的屬性。

在沒有給函數(shù)明確指定this值的情況下,this值等于Global對(duì)象

Math對(duì)象

ECMAScript還為保存數(shù)學(xué)公式和信息提供了一個(gè)公共位置,即Math對(duì)象

min()max()

這兩個(gè)方法用于確定一組數(shù)值中的最小值和最大值。這兩個(gè)方法都可以接受人一多個(gè)數(shù)值參數(shù);

要找到數(shù)組中的最大最小值,可以使用:Math.max.apply(Math,arr)

舍入方法

Math.ceil()執(zhí)行向上攝入,即它總是將數(shù)值向上舍入為最接近的整數(shù);

Math.floor()執(zhí)行向下舍入,即它總是將數(shù)值向下舍入為最接近的整數(shù);

Math.round()執(zhí)行標(biāo)準(zhǔn)舍入,即它總是將數(shù)值四舍五入為最接近的整數(shù);

random()方法

Math.random()方法返回大于等于0小于1的一個(gè)隨機(jī)數(shù)

可以利用這個(gè)方法從某個(gè)整數(shù)范圍內(nèi)隨機(jī)選擇一個(gè)值
值 = Math.floor(Math.random() * 可能值的總數(shù) + 第一個(gè)可能的值)

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/86437.html

相關(guān)文章

  • 高程五章引用類型

    摘要:對(duì)數(shù)組中的每一項(xiàng)運(yùn)行給定函數(shù),返回該函數(shù)會(huì)返回的項(xiàng)組成的數(shù)組。這些類型與其他引用類型相似,但同時(shí)也具有與各自的基本類型相應(yīng)的特殊行為。此外,所有原生引用類型的構(gòu)造函數(shù),像和,也都是對(duì)象的屬性。 1 Object類型 創(chuàng)建對(duì)象實(shí)例: new操作符后跟Object構(gòu)造函數(shù) ver person = new Object(); person.name = Nicolas; person.ag...

    fxp 評(píng)論0 收藏0
  • 《Java8實(shí)戰(zhàn)》-五章讀書筆記(使用流Stream-01)

    摘要:跳過元素流還支持方法,返回一個(gè)扔掉了前個(gè)元素的流。歸約到目前為止,我們見到過的終端操作都是返回一個(gè)之類的或?qū)ο蟮取_@樣的查詢可以被歸類為歸約操作將流歸約成一個(gè)值。通過反復(fù)使用加法,你把一個(gè)數(shù)字列表歸約成了一個(gè)數(shù)字。 使用流 在上一篇的讀書筆記中,我們已經(jīng)看到了流讓你從外部迭代轉(zhuǎn)向內(nèi)部迭代。這樣,你就用不著寫下面這樣的代碼來顯式地管理數(shù)據(jù)集合的迭代(外部迭代)了: /** * 菜單 ...

    OldPanda 評(píng)論0 收藏0
  • 「Java 8 函數(shù)式編程」讀書筆記——高級(jí)集合類和收集器

    摘要:本章是該書的第五章主要講了方法引用和收集器方法引用形如這樣的表達(dá)式可以簡(jiǎn)寫為這種簡(jiǎn)寫的語法被稱為方法引用方法引用無需考慮參數(shù)因?yàn)橐粋€(gè)方法引用可以在不同的情況下解析為不同的表達(dá)式這依賴于的推斷方法引用的類型方法引用可以分為四類引用靜態(tài)方法 本章是該書的第五章, 主要講了方法引用和收集器 方法引用 形如: artist -> artist.getName() (String arg) ->...

    imingyu 評(píng)論0 收藏0
  • 《Java8實(shí)戰(zhàn)》-五章讀書筆記(使用流Stream-02)

    摘要:第三個(gè)問題查找所有來自于劍橋的交易員,并按姓名排序。第六個(gè)問題打印生活在劍橋的交易員的所有交易額。第八個(gè)問題找到交易額最小的交易。 付諸實(shí)戰(zhàn) 在本節(jié)中,我們會(huì)將迄今學(xué)到的關(guān)于流的知識(shí)付諸實(shí)踐。我們來看一個(gè)不同的領(lǐng)域:執(zhí)行交易的交易員。你的經(jīng)理讓你為八個(gè)查詢找到答案。 找出2011年發(fā)生的所有交易,并按交易額排序(從低到高)。 交易員都在哪些不同的城市工作過? 查找所有來自于劍橋的交易...

    liangzai_cool 評(píng)論0 收藏0
  • 高程讀書筆記 第六章 面向?qū)ο蟪绦蛟O(shè)計(jì)

    摘要:創(chuàng)建一個(gè)新對(duì)象將構(gòu)造函數(shù)的作用域賦給新對(duì)象因此就指向了這個(gè)新對(duì)象執(zhí)行構(gòu)造函數(shù)中的代碼為這個(gè)新對(duì)象添加屬性返回新對(duì)象。 本章內(nèi)容 理解對(duì)象屬性 理解并創(chuàng)建對(duì)象 理解繼承 ECMA-262把對(duì)象定義為:無序?qū)傩缘募?,其屬性可以包含基本值、?duì)象或者函數(shù) 理解對(duì)象 創(chuàng)建對(duì)象 創(chuàng)建自定義對(duì)象的最簡(jiǎn)單方式就是創(chuàng)建一個(gè)Object的實(shí)例,再為它添加屬性和方法。 var person = new...

    468122151 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<