1.使用對(duì)象 2.創(chuàng)建并操作數(shù)組 3.理解基礎(chǔ)的js類型 4.使用基本類型和基本包裝類型
引用類型的值(對(duì)象)就是引用類型的一個(gè)實(shí)例埃撵。引用類型是一種數(shù)據(jù)結(jié)構(gòu)躏将,用于將數(shù)據(jù)和功能組織在一起。
對(duì)象是某個(gè)特定引用類型的實(shí)例数尿。新對(duì)象是使用new操作符跟一個(gè)構(gòu)造函數(shù)來創(chuàng)建的佑笋。構(gòu)造函數(shù)本身就是一個(gè)函數(shù)。
var person = new Object();
創(chuàng)建了Object引用類型的一個(gè)新實(shí)例仆葡,然后把該實(shí)例保存在了變量person中。使用構(gòu)造函數(shù)是Object叙谨,它只為新對(duì)象定義了默認(rèn)的屬性和方法棒口。
5.1Object類型
創(chuàng)建Object實(shí)例的方式有兩種:
第一種:使用new操作符后跟Object構(gòu)造函數(shù)
var person = new Object(); ? ? ? ? ? -------> ? ? ? ? ? ? var person = {};//與new Object()相同
person,name = "Mike";
person.age = 23;
第二種:對(duì)象字面量表示法
var person = {
????name : 'Mike', ? ? ? ? ? ? ? ? ? ? ? ? --------> ? ? ? ?? “name":'Mike",
????age:23 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? "age":23,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 5: true ? //數(shù)值屬性名會(huì)被自動(dòng)轉(zhuǎn)變成字符串
}
在通過對(duì)象字面量定義對(duì)象時(shí),實(shí)際上不會(huì)調(diào)用Object構(gòu)造函數(shù)诽里。
對(duì)象字面量也是向函數(shù)傳遞大量可選參數(shù)的首選方式袒餐。
我們可以使用方括號(hào)[]來訪問對(duì)象的屬性,方括號(hào)語法的主要優(yōu)點(diǎn)是可以通過變量來訪問屬性;一般用于屬性名包含會(huì)導(dǎo)致語法錯(cuò)誤的字符灸眼,或者屬性名使用了關(guān)鍵字或保留字卧檐。
5.2Array類型
雖然js的數(shù)組與其他語言中的數(shù)組都是有序列表,但是與其他語言不同的是焰宣,js的數(shù)組每一項(xiàng)可以保存任何類型的數(shù)據(jù)霉囚。而且它數(shù)組的大小是可以動(dòng)態(tài)調(diào)整的。
創(chuàng)建數(shù)組的方法有兩種:
第一種:使用Array構(gòu)造函數(shù)
使用Array構(gòu)造函數(shù)是可以省略new操作符
第二種:使用數(shù)組字面量
與Object對(duì)象一樣匕积,使用數(shù)組字面量表示法時(shí)盈罐,不會(huì)調(diào)用Array構(gòu)造函數(shù)。
數(shù)組的length屬性闸天,它不是只讀的暖呕。因此通過這個(gè)屬性“可以從數(shù)組的末尾移除項(xiàng)或者向數(shù)組中添加新項(xiàng)湾揽。
原本colors數(shù)組包含3項(xiàng),但是通過設(shè)置length長(zhǎng)度為2笼吟,將其最后一項(xiàng)移除库物。顯示出undefined
如果將length值設(shè)置比colors數(shù)組長(zhǎng)度大的值,就會(huì)添加新項(xiàng)贷帮,顯示undefined戚揭。
利用length屬性可以方便的向數(shù)組末尾添加新項(xiàng):
當(dāng)把一個(gè)值放在超出現(xiàn)在數(shù)組長(zhǎng)度的位置,這是數(shù)組的長(zhǎng)度就是這個(gè)length+1
上例這個(gè)數(shù)組3-98位置是沒有值的撵枢,返回undefined民晒。
5.2.1檢測(cè)數(shù)組
instanceof這個(gè)如果不是在同一個(gè)框架,存在多個(gè)全局作用域時(shí)候锄禽,這樣Array的構(gòu)造函數(shù)可能存在不同版本潜必。
這個(gè)如果為true就一定是Array。
為了解決這個(gè)問題沃但,不管這個(gè)值在哪個(gè)全局作用域都能判斷其是不是數(shù)組磁滚。
Array.isArray()這個(gè)方法支持的瀏覽器有IE9+,Safari4+宵晚,Opera10.5+和Chrome垂攘。如果不支持這個(gè)方法的話,
調(diào)用Object原生的toString()方法淤刃,會(huì)返回字符串構(gòu)造函數(shù)屬性名[object Array],這個(gè)方法也同樣可以用來檢測(cè)正則表達(dá)式和原生函數(shù)[object RegExp] [object Function]晒他,前提是toString()是沒有修改的原生版本
5.2.2轉(zhuǎn)換方法
所有對(duì)象都有toLocalString(),toString()和valueOf()方法。調(diào)用數(shù)組的toString會(huì)返回一個(gè)以數(shù)組中每個(gè)值得字符串形式拼接的以逗號(hào)分隔開的字符串钝凶。而調(diào)用valueOf會(huì)返回?cái)?shù)組仪芒。alert要接收字符串唁影,它就會(huì)在后臺(tái)調(diào)用toString。
另外通常toLocaleString方法返回的的值與toString和valueOf相同的值掂名,但是為了取得數(shù)組中每一項(xiàng)的值据沈,toLocaleString調(diào)用的是每一項(xiàng)的toLocaleString。
數(shù)組的toString饺蔑,toLocaleString锌介,valueOf方法,返回的都是以逗號(hào)分隔開的字符串猾警,如果想用其他分隔符的話就要使用join()方法
5.2.3棧方法
后進(jìn)先出
push()方法可以接受任意數(shù)量的參數(shù)孔祸,把它們逐個(gè)添加到數(shù)組的末尾,并返回修改數(shù)組的長(zhǎng)度发皿。
pop()方法是從數(shù)組的末尾移除最后一項(xiàng)崔慧,減少數(shù)組的長(zhǎng)度,返回被移除項(xiàng)穴墅。
5.2.4隊(duì)列方法
后進(jìn)后出
shift()方法惶室,移除數(shù)組第一項(xiàng)并返回該項(xiàng)。
unshift()方法玄货,在數(shù)組前端添加任意項(xiàng)并返回?cái)?shù)組長(zhǎng)度皇钞。
結(jié)合push和shift能將數(shù)組像隊(duì)列一樣使用
使用unshift和pop可以實(shí)現(xiàn)反向隊(duì)列
5.2.5重排序方法
數(shù)組中已經(jīng)存在了兩個(gè)重排序方法reverse(),sort().
reverse()方法會(huì)反轉(zhuǎn)數(shù)組項(xiàng)的順序。
默認(rèn)情況下sort方法是按升序排序松捉,sort方法調(diào)用每個(gè)數(shù)組項(xiàng)的toString()方法夹界,然后比較得到的字符串。
因此sort方法可以接收一個(gè)比較函數(shù)作為參數(shù)隘世,當(dāng)大于是返回1可柿,小于時(shí)返回-1,等于返回0丙者。
如果想要降序的話就將返回值調(diào)換趾痘。
對(duì)于數(shù)值類型和valueof返回?cái)?shù)值的對(duì)象類型,可以使用第二個(gè)值減第一個(gè)值蔓钟。
5.2.6操作方法
concat()方法可以基于當(dāng)前的數(shù)組所有項(xiàng)創(chuàng)建一個(gè)新的數(shù)組。創(chuàng)建一個(gè)當(dāng)前數(shù)組的副本卵贱,然后將所接收到到的參數(shù)追加到這個(gè)數(shù)組末尾滥沫,最后返回這個(gè)數(shù)組。參數(shù)可以為空键俱,也可以是一個(gè)或多個(gè)數(shù)組兰绣。
slice()方法基于當(dāng)前數(shù)組的一或多個(gè)項(xiàng)創(chuàng)建一個(gè)新數(shù)組。slice可以接收一或兩個(gè)參數(shù)编振。即返回項(xiàng)的起始位置到結(jié)束為止缀辩。如果只有一個(gè)參數(shù),則返回這個(gè)位置到末尾的所有項(xiàng)
splice()方法主要用途是向數(shù)組中插入項(xiàng),但是這個(gè)方法的使用方式有3種:
1.刪除(delete):可以刪除任意數(shù)量的項(xiàng)臀玄,只需指定兩個(gè)參數(shù):要?jiǎng)h除的第一項(xiàng)的位置瓢阴,和要?jiǎng)h除的項(xiàng)數(shù)。
ex:splice(0,2)就是刪除數(shù)組中的前兩項(xiàng)
2.插入(insert):可以向指定位置插入任意數(shù)量的項(xiàng)健无,只需提供3個(gè)參數(shù):起始位置荣恐,0(要?jiǎng)h除的項(xiàng)數(shù))和要插入的項(xiàng)數(shù)。如果要插入多項(xiàng)累贤,可以再傳入第四叠穆,第五以至任意多各項(xiàng)。
ex:splice(3,0,"red","green")就是從當(dāng)前數(shù)組位置3開始插入red臼膏,green
3.替換(replace):可以向指定位置插入任意數(shù)量的項(xiàng)硼被,且同時(shí)刪除任意數(shù)量的項(xiàng),只需指定3個(gè)參數(shù):起始位置渗磅。要?jiǎng)h除的項(xiàng)數(shù)和要插入的任意數(shù)量的項(xiàng)嚷硫,二者不必相等。
ex:splice(1,1,"red")就是刪除位置1那項(xiàng)并且插入red
5.2.7位置方法
兩個(gè)位置方法:indexOf和lastIndexOf夺溢。這兩個(gè)方法都接受兩個(gè)參數(shù):要查找的項(xiàng)和(可選的)開始查找的位置论巍。
其中indexOf是從數(shù)組的開頭開始向后查找,lastIndexOf是從數(shù)組的末尾開始查找风响。會(huì)使用全等操作符===嘉汰,沒有找到返回-1
5.2.8迭代方法
5種迭代方法,每種方法都接收兩個(gè)參數(shù):要在每一項(xiàng)上運(yùn)行的函數(shù)和(可選)運(yùn)行該函數(shù)的作用域?qū)ο?-影響this的值状勤。傳入這些方法中的函數(shù)會(huì)接收三個(gè)參數(shù):數(shù)組項(xiàng)的值鞋怀,該項(xiàng)在數(shù)組中的位置和數(shù)組對(duì)象本身。
1.every():對(duì)數(shù)組中每一項(xiàng)運(yùn)行指定的函數(shù)持搜,如果該函數(shù)對(duì)每一項(xiàng)都返回true密似,則返回true
2.filter():對(duì)數(shù)組中的每一項(xiàng)運(yùn)行指定的函數(shù),返回該函數(shù)會(huì)返回true的項(xiàng)組成的數(shù)組葫盼。
3.forEach():對(duì)數(shù)組中的每一項(xiàng)運(yùn)行指定的函數(shù)残腌,這個(gè)方法沒有返回值。
4.map():對(duì)數(shù)組中的每一項(xiàng)運(yùn)行指定的函數(shù)贫导,返回每次函數(shù)調(diào)用的結(jié)果組成的數(shù)組抛猫。
5.some():對(duì)數(shù)組中的每一項(xiàng)運(yùn)行指定的函數(shù),如果函數(shù)對(duì)任意一項(xiàng)返回true孩灯,則返回true闺金。
以上方法均不會(huì)改變?cè)瓉淼臄?shù)組中包含的值。
every和some都是用來查詢數(shù)組中的項(xiàng)是否滿足某個(gè)條件
5.2.9歸并方法
兩個(gè)歸并方法:reduce()和reduceRight().這兩個(gè)方法都會(huì)迭代數(shù)組的所有項(xiàng)峰档,然后構(gòu)建一個(gè)最終返回值败匹。reduce是從數(shù)組第一項(xiàng)開始寨昙,reduceRight是從數(shù)組最后一項(xiàng)開始,向前遍歷掀亩。
接收兩個(gè)參數(shù):一個(gè)是在每一項(xiàng)上面調(diào)用的函數(shù)和(可選)作為歸并基礎(chǔ)的初始值舔哪。傳給函數(shù)的接收4個(gè)參數(shù):前一個(gè)值,當(dāng)前值归榕,項(xiàng)的索引和數(shù)組對(duì)象尸红。這個(gè)函數(shù)返回的任何值都會(huì)作為下一個(gè)參數(shù)自動(dòng)傳給下一項(xiàng)。
5.3Date類型
創(chuàng)建一個(gè)日期對(duì)象刹泄,使用new操作符和Date構(gòu)造函數(shù)即可:
兩個(gè)可以將格式化的日期轉(zhuǎn)換為毫秒數(shù):Date.parse() 和Date.UTC() 其中接受的日期格式:
1.“月/日/年”? ex:6/13/2018
2."英文月 日外里,年" ex:January 4,2018
3."英文星期幾 英文月名 日 年 時(shí):分:秒 時(shí)區(qū)" ex:Tue May 25 2018 00:00:00 GTM-0700
4.ISO 8601擴(kuò)展格式 YYYY-MM-DDTHH:mm:ss.sssZ ex:2018-5-1T00:00:00
上面兩種是等價(jià)的,因?yàn)镈ate會(huì)在后臺(tái)調(diào)用Date.parse特石,如果傳入的字符串不是Date.parse能解析的盅蝗,就會(huì)返回NaN。
Date.UTC()參數(shù)分別是年份姆蘸,月(0-11)墩莫,日,小時(shí)(0-23)逞敷,分鐘狂秦,秒以及毫秒。其中前兩個(gè)是必需的推捐。
下面的實(shí)例是基于美國(guó)時(shí)間Date.parse同樣
基于本地時(shí)間
Date.now():返回表示調(diào)用這個(gè)方法時(shí)候的日期和毫秒數(shù)
5.3.1繼承的方法
Date類型也重寫了toString裂问,toLocaleString和valueOf方法。
valueOf方法返回的是日期的毫秒表示牛柒,這樣可以使用比較操作符來比較日期堪簿。
5.3.2日期格式化方法
toDateString()--->星期幾 月 日 年
toTimeString()--->時(shí) 分 秒 和時(shí)區(qū)
toLocaleDateString()--->以特定于時(shí)區(qū)的顯示星期幾 月 日 年
toLocaleTimeString()--->顯示時(shí) 分 秒
toUTCString()--->完整的UTC日期
還有很多日期/時(shí)間組件方法,ex:setFullYear皮壁、getFullYear等等椭更。
5.4RegExp類型
js通過RegExp類型來支持正則表達(dá)式。
var expression = /pattern/flags;
其中pattern部分可以使任何簡(jiǎn)單或者復(fù)雜的正則表達(dá)式蛾魄。每個(gè)正則表達(dá)式均可帶一個(gè)或多個(gè)標(biāo)志(flags)
1.g(global):表示全局模式虑瀑,即模式將被應(yīng)用于所有字符串,而非在發(fā)現(xiàn)第一個(gè)匹配項(xiàng)時(shí)立刻停止滴须。
2.i(case-insensitive):表示不區(qū)分大小寫模式缴川,即在確定匹配項(xiàng)時(shí)忽略模式和字符串大小寫。
3.m(multiline):表示多行模式描馅,即在到達(dá)一行文本末尾時(shí)還會(huì)繼續(xù)查找下一行是否存在與模式相匹配的項(xiàng)。
/^23.*45$/以23開頭45結(jié)尾的字符串(正則表達(dá)式相關(guān)內(nèi)容之后再整理)
5.4.1RegExp實(shí)例屬性
global:表示是否設(shè)置了g標(biāo)志
ignoreCase:表示是否設(shè)置了i標(biāo)志
lastIndex:表示開始搜索下一個(gè)匹配的字符位置而线,從0算起
multiline:表示是否設(shè)置了m標(biāo)志铭污。
source:按照字面量形式的正則表達(dá)式返回恋日。
5.4.2RegExp實(shí)例方法
exec()方法參數(shù)是需要執(zhí)行對(duì)應(yīng)正則表達(dá)式的數(shù)組。返回的雖然是數(shù)組的實(shí)例但是多了兩個(gè)屬性嘹狞,input和index
5.4.3RegExp構(gòu)造函數(shù)屬性
input:最近一次要匹配的字符串岂膳。Opera未實(shí)現(xiàn)這個(gè)屬性
lastMatch:最近一次的匹配項(xiàng)。Opera未實(shí)現(xiàn)這個(gè)屬性
lastParen:最后一次的捕獲組磅网。Opera未實(shí)現(xiàn)這個(gè)屬性
leftContent:input字符串中l(wèi)astMatch之前的文本
multiline:表示是否所有表達(dá)式都使用多行模式谈截。IE和Opera未實(shí)現(xiàn)這個(gè)屬性
rightContent:input字符串中l(wèi)astMatch之后的文本
5.5Function類型
函數(shù)實(shí)際上是對(duì)象,每個(gè)函數(shù)相當(dāng)于Function類型的實(shí)例涧偷。由于函數(shù)是對(duì)象簸喂,所以函數(shù)名實(shí)際上是指向函數(shù)對(duì)象的指針。函數(shù)一般使用函數(shù)聲明和函數(shù)表達(dá)式
由于函數(shù)名是指針燎潮,因此一個(gè)函數(shù)可以有多個(gè)函數(shù)名喻鳄。
5.5.1沒有重載
將函數(shù)名想象為指針,這樣就能看出确封,在創(chuàng)建第二個(gè)函數(shù)時(shí)覆蓋了前面的函數(shù)除呵。
5.5.2函數(shù)聲明與函數(shù)表達(dá)式
解析器會(huì)率先讀取函數(shù)聲明,并使其執(zhí)行任何代碼之前可用(可以訪問)爪喘;至于函數(shù)表達(dá)式颜曾,則必須等到解析器執(zhí)行到它所在的代碼行,才會(huì)真正被執(zhí)行秉剑。除了這一點(diǎn)之外二者其實(shí)是等價(jià)的泛豪。
5.5.3作為值的函數(shù)
因?yàn)楹瘮?shù)名本身就是變量,所以函數(shù)也可以作為值來使用秃症。不僅可以將一個(gè)函數(shù)作為另一個(gè)函數(shù)的參數(shù)傳遞候址,也可以將一個(gè)函數(shù)作為另一個(gè)函數(shù)的結(jié)果返回。
5.5.4函數(shù)內(nèi)部屬性
在函數(shù)內(nèi)部有兩個(gè)特殊的對(duì)象:arguments和this种柑、其中arguments是一個(gè)類數(shù)組對(duì)象岗仑,包含著傳入函數(shù)中的所有參數(shù)。雖然arguments的主要用途是保存函數(shù)參數(shù)聚请,但這個(gè)對(duì)象有一個(gè)屬性callee荠雕,該屬性是一個(gè)指針,指向擁有這個(gè)arguments對(duì)象的函數(shù)驶赏。
使用arguments.callee可以避免函數(shù)內(nèi)外部耦合炸卑。
函數(shù)對(duì)象的另一個(gè)屬性caller
5.5.5函數(shù)屬性和方法。
函數(shù)也有屬性和方法煤傍,每個(gè)函數(shù)有兩個(gè)屬性length和prototype盖文。
其中l(wèi)ength屬性表示函數(shù)希望接受的參數(shù)個(gè)數(shù)。
prototype屬性是保存所有實(shí)例方法和屬性的真正所在蚯姆。諸如toString和valueOf等方法實(shí)際上都保存在prototype名下五续,只不過是通過各自對(duì)象的實(shí)例訪問洒敏。在創(chuàng)建自定義引用類型以及實(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ù)組。
call和apply的區(qū)別在于call方法傳遞給函數(shù)的參數(shù)必須逐個(gè)列舉扳肛。
bind這個(gè)方法會(huì)創(chuàng)建一個(gè)實(shí)例傻挂,其this值相當(dāng)于是綁定到傳給bind函數(shù)的值。其作用與call和apply方法一樣敞峭,傳遞參數(shù)與call方法一樣踊谋,唯一的不同的是使用call()和apply()方法是直接調(diào)用并返回結(jié)果,而bind()方法返回的是一個(gè)函數(shù)旋讹;需進(jìn)一步調(diào)用殖蚕。
5.6基本包裝類型
js還提供了3中特殊的引用類型,Boolean沉迹,String睦疫,Number
5.6.1Boolean類型
Boolean類型是與布爾值對(duì)應(yīng)的引用類型。但是Boolean對(duì)象和布爾值之前區(qū)別也很大鞭呕。
5.6.2Number類型
toFixed:參數(shù)是顯示幾位小數(shù)
toExponential:以指數(shù)表示法蛤育,參數(shù)是顯示小數(shù)位數(shù)
toPrecision:
5.6.3String類型
length屬性:會(huì)將空格等計(jì)入長(zhǎng)度
1.字符方法
charAt()和charCodeAt().都是會(huì)得到給定位置的那個(gè)字符。
2.字符串操作方法
concat(),slice(),substring(),substr()還有+號(hào)操作符
slice:第一個(gè)參數(shù)是起始位置葫松,第二個(gè)參數(shù)是終止位置(可選)瓦糕,如果為負(fù)數(shù)則加上字符串長(zhǎng)度
substring:第一個(gè)參數(shù)是起始位置,第二個(gè)參數(shù)是終止位置(可選)腋么,如果為負(fù)數(shù)轉(zhuǎn)換為0
substr:第一個(gè)參數(shù)是起始位置咕娄,第二個(gè)參數(shù)是項(xiàng)數(shù),如果為負(fù)數(shù)珊擂,第一個(gè)參數(shù)加上字符串長(zhǎng)度圣勒,第二個(gè)參數(shù)轉(zhuǎn)換為0;
3.字符串位置方法
indexOf和lastIndexOf 與數(shù)組的一樣摧扇,可以接收兩個(gè)參數(shù)(查找的字符串圣贸,起始位置(可選))
4.trim方法
這個(gè)方法會(huì)創(chuàng)建一個(gè)字符串副本,刪除前置和后綴的所有空格扛稽,然后返回結(jié)果吁峻。
5.字符串大小寫轉(zhuǎn)換方法
toLowerCase(),toLocaleLowerCase(),toUpperCase()和toLocaleUpperCase().
如果不知道自己的代碼將會(huì)在哪種語言環(huán)境中運(yùn)行,還是使用針對(duì)地區(qū)的方法更為穩(wěn)妥toLocaleLowerCase和toLocaleUpperCase().用含。
6.字符串的模式匹配方法
match()方法本質(zhì)上與調(diào)用RegExp的exec()方法相同橙困。match()值接收一個(gè)參數(shù),要么是正則表達(dá)式耕餐,要么是RegExp對(duì)象。返回一個(gè)數(shù)組辟狈。
serach()方法與match()方法參數(shù)相同肠缔,但是返回的是第一個(gè)匹配項(xiàng)的索引;如果沒有找到返回-1哼转。并且search方法始終是從字符串開頭向后查找明未。
replace()方法接受兩個(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è)匹配項(xiàng)(即與模式匹配的字符串)的情況下疚膊,會(huì)向這個(gè)函數(shù)傳遞3個(gè)參數(shù):模式匹配符,模式匹配項(xiàng)在字符串的位置和原始字符串虾标。
split()這個(gè)方法可以基于指定的分隔符將一個(gè)字符串分割成多個(gè)子字符串寓盗,并且將結(jié)果放到一個(gè)數(shù)組中。分隔符可以使字符串璧函,也可以是一個(gè)RegExp對(duì)象傀蚌,(可選)第二個(gè)參數(shù),用于指定數(shù)組的大小以便確保返回的數(shù)組不會(huì)超過既定大小蘸吓。
7.localeCompare()方法(是不是比參數(shù)字符串大)
區(qū)分時(shí)區(qū)的善炫,在美國(guó)時(shí)區(qū)字符串比較看大小寫的
這個(gè)方法比較兩個(gè)字符串,并且返回下列值:
如果字符串在字母表中應(yīng)該排在字符串參數(shù)之前美澳,返回一個(gè)負(fù)數(shù)(一般是-1)销部;
如果字符串等于字符串參數(shù),返回0制跟;
如果字符串在字母表應(yīng)該排在字符串參數(shù)之后舅桩,則返回一個(gè)整數(shù)(一般是1)
8.fromCharCode()方法
接收一個(gè)或多個(gè)字符編碼,然后將它們轉(zhuǎn)換成一個(gè)字符串雨膨,從本質(zhì)上看擂涛,這個(gè)方法跟實(shí)例方法charCodeAt()執(zhí)行的是相反的操作。
5.7單體內(nèi)置對(duì)象
不依賴宿主環(huán)境的對(duì)象,在js執(zhí)行之前就已經(jīng)存在了撒妈。意思就是我們不必顯示的實(shí)例化內(nèi)置對(duì)象恢暖,因?yàn)樗鼈円呀?jīng)實(shí)例化了。之前的內(nèi)置對(duì)象:Object狰右,Array杰捂。String以及兩個(gè)單體內(nèi)置對(duì)象Global和Math。
5.7.1Global對(duì)象
1.URI編碼方法
global對(duì)象的encodeURI()方法和encodeURIComponent()方法可以對(duì)URI(uniform resource indentifiers 資源通配符)進(jìn)行編碼棋蚌,以便發(fā)送給瀏覽器嫁佳。有效的URI不能包括一些無效字符,這個(gè)兩個(gè)URI編碼方法可以用特殊的UTF-8編碼替代所有無效字符谷暮,從而讓瀏覽器明白蒿往。
encodeURI()主要用于整個(gè)URI
encodeURIComponent()主要用于URI中的某一段
它們的主要區(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和decodeURIComponent對(duì)應(yīng)解碼
2.eval()方法
就像一個(gè)完整的js代碼解析器蔬充。因?yàn)槠淠軌蚪忉尳忉尨a字符串的能力非常強(qiáng)大,因此在使用時(shí)要極為謹(jǐn)慎竟秫。特別是在用它執(zhí)行用戶輸入數(shù)據(jù)的情況下娃惯,否則可能會(huì)有惡意用戶輸入威脅你站點(diǎn)和應(yīng)用程序安全的代碼(所謂的代碼注入)
5.7.2Math對(duì)象
1.Math對(duì)象的屬性
Math對(duì)象的屬性大多是數(shù)學(xué)計(jì)算中可能用到的一些特殊值。具體的不介紹了肥败。
2.min()和max()
用來確認(rèn)一組數(shù)值中的最大值和最小值趾浅,這兩個(gè)方法都可以接受多個(gè)參數(shù)。
3.舍入方法
將小數(shù)值舍入為整數(shù)的幾個(gè)方法:Math.ceil(),Math.floor(),Math.round()
Math.ceil():向上舍入馒稍,總是將數(shù)值向上舍入為整數(shù)皿哨。
Math.floor():向下舍入,總是將數(shù)值向下舍入為整數(shù)纽谒。
Math.round():標(biāo)準(zhǔn)舍入证膨,就是四舍五入舍入為整數(shù)
4.random()方法
Math.random 返回一個(gè)大于0小于1的隨機(jī)數(shù)。
值 = Math.floor(Math.random()*可能值的總數(shù) + 第一個(gè)可能值)