欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

JavaScript高級(jí)程序設(shè)計(jì)(第3版)學(xué)習(xí)筆記11 內(nèi)建js對(duì)象

 更新時(shí)間:2012年10月11日 16:01:33   作者:  
內(nèi)建對(duì)象是指由ECMAScript實(shí)現(xiàn)提供的、不依賴于宿主環(huán)境的對(duì)象,這些對(duì)象在程序運(yùn)行之前就已經(jīng)存在了
內(nèi)建對(duì)象就好比是JDK中的類庫(kù),開發(fā)者可以直接拿來(lái)使用,這極大的方便了常見的編程任務(wù)。這篇文章就來(lái)瀏覽一下主要的內(nèi)建對(duì)象,當(dāng)然,我們并不是第一次接觸內(nèi)建對(duì)象,前面已經(jīng)接觸到的就有Object、Function、Boolean、Number、String,對(duì)于已經(jīng)介紹過(guò)的,這里再總結(jié)復(fù)習(xí)一下,沒(méi)有介紹過(guò)的,根據(jù)相關(guān)性來(lái)對(duì)比的總結(jié),RegExp對(duì)象及正則表達(dá)式在下一篇中再單獨(dú)介紹。

1、內(nèi)建全局單例對(duì)象

(1)內(nèi)建全局單例對(duì)象:在整個(gè)執(zhí)行環(huán)境中只有一個(gè)對(duì)象實(shí)例,這些對(duì)象沒(méi)有內(nèi)部屬性[[Construct]]和[[Call]],因此不能使用new來(lái)創(chuàng)建,也不能作為函數(shù)來(lái)調(diào)用,而是直接使用對(duì)象名稱來(lái)引用其屬性和方法(對(duì)于全局對(duì)象,則可以直接使用屬性和方法名)。內(nèi)建全局單例對(duì)象有Global、Math、JSON。

(2)內(nèi)建常量:主要是指內(nèi)建全局單例對(duì)象的屬性,這些屬性的[[Writable]]、[[Configurable]]、[[Enumerable]]特性全部為false,因此不能修改屬性值,不能刪除屬性,也不能在for-in循環(huán)中枚舉。這些內(nèi)建常量有:

對(duì)象 名稱 常量值 說(shuō)明 對(duì)象 名稱 常量值 說(shuō)明
Global NaN NaN 表示不是數(shù)值 Math E ≈2.718 自然對(duì)數(shù)的底數(shù) e
Infinity +∞ 正無(wú)窮 LN10 ≈2.303 2 的自然對(duì)數(shù)
undefined undefined 未定義 LN2 ≈0.693 10的自然對(duì)數(shù)
LOG2E ≈1.443 e 的以2 為底的對(duì)數(shù)
LOG10E ≈0.434 e 的以10為底的對(duì)數(shù)
PI ≈3.142 圓周率,即圓周長(zhǎng)與直徑的比
SQRT1_2 ≈0.707 2的平方根的倒數(shù)
SQRT2 ≈1.414 2的平方根

注:Global對(duì)象中的常量可以使用名稱直接訪問(wèn),Math對(duì)象中的常量需使用類似Math.PI的形式來(lái)訪問(wèn)。

(3)內(nèi)建靜態(tài)方法:

所屬對(duì)象 類別 方法 說(shuō)明
Global 全局解析方法 eval(x) 解析Javascript字符串,eval中定義的變量不會(huì)提升,在嚴(yán)格模式下,外部不能訪問(wèn)eval內(nèi)定義的變量
字符串解析為Number parseInt(string,radix) 將字符串解析為整數(shù),可以傳入一個(gè)進(jìn)制,會(huì)忽略前導(dǎo)空格
parseFloat(string) 將字符串解析為浮點(diǎn)數(shù),會(huì)忽略前導(dǎo)的空格和前導(dǎo)0
Number判斷方法 isNaN(number) 判斷是否為數(shù)字
isFinite(number) 判斷是否為有限數(shù)
URI處理方法 encodeURI(uri) 對(duì)URI編碼,用于整個(gè)URI,用特殊的UTF-8編碼替換所有無(wú)效字符,不會(huì)對(duì)本身屬于URI的特殊字符編碼,如冒號(hào),正斜杠,問(wèn)號(hào),井號(hào)等。
decodeURI(ecodedURI) 對(duì)使用ecnodeURI()編碼的字符串解碼
encodeURIComponent(uriComponent) 對(duì)URI編碼,用于URI中的某一段,會(huì)對(duì)發(fā)現(xiàn)的任何非標(biāo)準(zhǔn)字符進(jìn)行解碼
decodeURIComponent(encodedURIComponent) 對(duì)使用ecnodeURIComponent()編碼的字符串解碼
內(nèi)建對(duì)象構(gòu)造器方法

Object、Function、Array、String、Number、Boolean、Date、RegExp

Error、EvalError、RangeError、ReferenceError、SyntaxError、TypeError、URIError

這里每一個(gè)構(gòu)造函數(shù)都構(gòu)成了一個(gè)內(nèi)建的對(duì)象類型
Math 三角函數(shù) sin(x)、cos(x)、tan(x) x的正弦、余弦、正切
反三角函數(shù) asin(x)、acos(x)、atan(x)、atan2(y,x) x的煩正弦、反余弦、反正切、y/x的反正切
舍入函數(shù) ceil(x)、floor(x)、round(x) 向上舍入(大于該數(shù)的最小整數(shù))、向下舍入(小于該數(shù)的最大整數(shù))、四舍五入
最值函數(shù) max([value1[value2[,...]]])、min([value1[,value2[,...]]]) 最大值、最小值
隨機(jī)函數(shù) random() 返回介于0和1之間的隨機(jī)數(shù),不包括0和1.隨機(jī)公式:隨機(jī)值=Math.floor(Math.random() * 可能值的個(gè)數(shù) + 初始值)
其它常見數(shù)學(xué)函數(shù) abs(x)、exp(x)、log(x)、pow(x,y)、sqrt(x) 絕對(duì)值、Math.E的x次冪、x的自然對(duì)數(shù)、x的y次冪、x的平方根
JSON  解析 parse(text[,reviver]) 把JSON字符串解析外為Javascript值
序列化 stringify(value[,replacer[,space]]) 把Javascript對(duì)象序列號(hào)為JSON字符串,默認(rèn)情況下不包括空格和縮進(jìn),所有函數(shù)、原型成員以及值為undefined的屬性會(huì)被忽略

說(shuō)明:

(1)全局對(duì)象中還有escape()/unescape()方法,由于這兩個(gè)方法只能正確編碼ASCII字符已經(jīng)被廢棄,而使用上表中的encodeURI()等方法來(lái)替換。

(2)JSON.parse()可以接受一個(gè)可選的參數(shù),這個(gè)參數(shù)是一個(gè)函數(shù),被稱為還原函數(shù),還原函數(shù)返回一個(gè)值,接受兩個(gè)參數(shù):一個(gè)鍵和一個(gè)值。如果還原函數(shù)返回undefined,表示要從結(jié)果中刪除相應(yīng)的鍵,返回其他值,則將該值插入到結(jié)果中。

(3)JSON.stringify()可以接受二個(gè)可選參數(shù):

  A、第一個(gè)可選參數(shù)是個(gè)過(guò)濾器,可以是一個(gè)數(shù)組,也可以是一個(gè)函數(shù)。如果是一個(gè)數(shù)組,那么結(jié)果中只保留這個(gè)數(shù)組中列出的屬性;如果是一個(gè)函數(shù),這個(gè)函數(shù)被稱為替換函數(shù),接受兩個(gè)參數(shù):一個(gè)鍵和一個(gè)值。替換函數(shù)返回undefined時(shí)會(huì)忽略這個(gè)鍵,否則就將返回值作為這個(gè)鍵的值插入到相應(yīng)位置。

  B、第二個(gè)可選參數(shù)是個(gè)選項(xiàng),表示是否在JSON字符串中保留縮進(jìn)。如果這個(gè)參數(shù)是數(shù)字,表示每個(gè)級(jí)別縮進(jìn)的空格數(shù)(最大不能超過(guò)10,超過(guò)10時(shí)自動(dòng)設(shè)置為10),如果這個(gè)參數(shù)是字符串,則將作為縮進(jìn)字符處理。

  在調(diào)用JSON.stringify(obj)時(shí),如果obj中有toJSON()方法并返回一個(gè)有效值時(shí),會(huì)首先調(diào)用這個(gè)方法。

2、Object與Function

  這兩個(gè)內(nèi)建對(duì)象在前面已經(jīng)重點(diǎn)討論過(guò),這里總結(jié)一下:

對(duì)象/構(gòu)造函數(shù)/[[Class]] 構(gòu)造器屬性(靜態(tài)屬性) 原型屬性 實(shí)例屬性 內(nèi)部屬性
Object prototype constructor               [[Prototype]] 
defineProperty() toString() [[Class]]
defineProperties() toLocaleString() [[Extensible]]
getOwnPropertyDescriptor() valueOf() [[Get]]
preventExtensions() hasOwnProperty() [[GetOwnProperty]]
seal() propertyIsEnumerable() [[GetProperty]]
isSeal() isPrototypeOf()       [[Put]]
frozen() [[CanPut]]
isFreeze() [[HasProperty]]
create() [[Delete]]
getOwnPropertyNames() [[DefaultValue]]
getPrototypeOf() [[DefineOwnProperty]]
keys()  
Function prototype call() prototype [[HasInstance]]
length apply() length     [[Scope]]
bind()    [[FormalParameters]]
[
復(fù)制代碼 代碼如下:
]
[[Construct]]
[[Call]]

說(shuō)明:

(1)構(gòu)造器屬性(靜態(tài)屬性)是直接定義在構(gòu)造函數(shù)這個(gè)對(duì)象本身上的屬性,只能通過(guò)構(gòu)造函數(shù)名來(lái)直接訪問(wèn),原型屬性是定義在構(gòu)造函數(shù)原型對(duì)象上的屬性,可以通過(guò)原型去訪問(wèn),但更重要的是可以通過(guò)構(gòu)造函數(shù)的實(shí)例去訪問(wèn)。比如上表Object對(duì)象的defineProperty()就只能以O(shè)bject.defineProperty()的形式來(lái)調(diào)用,而hasOwnProperty()這可以在任意一個(gè)Object實(shí)例對(duì)象上調(diào)用。

(2)Object本身是一個(gè)(構(gòu)造)函數(shù),也就是Function類的一個(gè)實(shí)例,因此也就有了Function實(shí)例所具有的屬性prototype和length(===1,上表未列出),同時(shí),由于Object還是一個(gè)構(gòu)造函數(shù),也就構(gòu)成了一種(內(nèi)建)類型Object,通過(guò)原型繼承,這個(gè)類型是ES中所有其它類型的基類,也就是說(shuō)所有的對(duì)象都可以訪問(wèn)上表中Object的原型屬性。這里原型繼承是基于下面原理來(lái)實(shí)現(xiàn)的:Object原型的原型是null(即有Object.getPrototypeOf(Object.prototype)===null),其它對(duì)象的原型是Object的實(shí)例。

(3)Function是一個(gè)構(gòu)造函數(shù),因此構(gòu)成了一種內(nèi)建類型Function,同時(shí),因?yàn)槭呛瘮?shù),也就是一個(gè)對(duì)象,這個(gè)對(duì)象的原型對(duì)象是Object的一個(gè)實(shí)例,因而可以訪問(wèn)Object的原型屬性(Function類中有些方法覆蓋了Object中的原型方法,上表未列出)。

(4)注意區(qū)分Function類中的構(gòu)造器屬性和實(shí)例屬性,可以這樣來(lái)理解:首先Function類的所有實(shí)例都有屬性prototype(函數(shù)原型對(duì)象)和length(形式參數(shù)的個(gè)數(shù)),然后因?yàn)镕unction本身也是一個(gè)函數(shù),是Function類的一個(gè)實(shí)例,因此有prototype和length屬性(屬性值已經(jīng)確定了),而這屬性是直接定義在Function構(gòu)造函數(shù)上的,也就是構(gòu)造器屬性了。

(5)其它關(guān)于Object和Function中不理解的地方可以參考前面的文章,也可以自己查閱相關(guān)資料。

3、Array與String

  將Array和String這兩種內(nèi)置對(duì)象放在一起,主要是因?yàn)樗麄冇幸恍┓椒ū容^類似,我自己就常常有搞不拎清的時(shí)候,于是借這個(gè)機(jī)會(huì)比較一下。

功能類似方法 Array對(duì)象獨(dú)有方法 String對(duì)象獨(dú)有方法
類別 Array方法 String方法 類別 方法 說(shuō)明 類別 方法 說(shuō)明
方法 說(shuō)明 方法 說(shuō)明
共有屬性  length 數(shù)組項(xiàng)的個(gè)數(shù),可以修改長(zhǎng)度來(lái)實(shí)現(xiàn)添加或移除數(shù)組項(xiàng)的功能 length 字符串中字符的個(gè)數(shù) 棧和隊(duì)列    pop() 移除數(shù)組最后一項(xiàng),修改數(shù)組長(zhǎng)度,返回被移除的項(xiàng) 去空格 trim() 去掉字符串前后的空格
對(duì)象創(chuàng)建 構(gòu)造函數(shù)

1、new Array([item0[,item1[,...]]])

2、new Array(len)

上面兩種方式的new可以省略

構(gòu)造函數(shù)

new String([value])

注意:上面的new省略時(shí),則作為類型轉(zhuǎn)換函數(shù)調(diào)用

push()  接受任意個(gè)參數(shù),把它們逐個(gè)添加到數(shù)組末尾,并返回修改后數(shù)組的長(zhǎng)度 比較 localeCompare()

對(duì)象在參數(shù)前返回負(fù)數(shù)

相等返回0

后面返回正數(shù)

數(shù)組字面量 使用方括號(hào)[] 字符串字面量 使用成對(duì)的單引號(hào)或成對(duì)的雙引號(hào) shift() 移除數(shù)組第一項(xiàng)并返回,修改數(shù)組長(zhǎng)度 HTML方法 見附表 用于簡(jiǎn)化常見HTML格式化任務(wù)的方法,已經(jīng)不建議使用
轉(zhuǎn)換方法   toLocaleString() 調(diào)用數(shù)組每一項(xiàng)的toLocaleString(),然后用逗號(hào)連接起來(lái) toLocaleString()  返回對(duì)象表示的字符串 unshift() 接受任意個(gè)參數(shù),并添加到數(shù)組前面,返回新數(shù)組的長(zhǎng)度 大小寫轉(zhuǎn)換   toLowerCase() 轉(zhuǎn)小寫 
toString() 調(diào)用數(shù)組每一項(xiàng)的toString(),然后用逗號(hào)連接起來(lái) toString()  返回對(duì)象表示的字符串 排序 reverse() 反轉(zhuǎn)數(shù)組項(xiàng)的順序 toLocaleLowerCase()   
valueOf() 返回?cái)?shù)組本身,即有array === array.valueOf() valueOf()  返回對(duì)象表示的字符串 sort()  默認(rèn)按升序排序,可以接受一個(gè)比較函數(shù)  toUpperCase()  轉(zhuǎn)大寫 
連接方法 join() 傳入一個(gè)參數(shù)作為分隔符,將數(shù)組每一項(xiàng)連接起來(lái),默認(rèn)為逗號(hào) + 字符串相加

迭代方法

兩個(gè)參數(shù):

1、執(zhí)行函數(shù)(數(shù)組項(xiàng)的值,該項(xiàng)在數(shù)組中的位置,數(shù)組)

2、作用域

every() 對(duì)數(shù)組中每一項(xiàng)運(yùn)行執(zhí)行函數(shù),每一項(xiàng)都返回true時(shí)返回true toLocaleUpperCase()  
concat() 創(chuàng)建一個(gè)原數(shù)組的副本,將傳入的參數(shù)壓入新數(shù)組并返回新數(shù)組 concat() 拼接字符串,更多情況是直接使用“+”拼接 some() 對(duì)數(shù)組中每一項(xiàng)運(yùn)行執(zhí)行函數(shù),如果有其中一項(xiàng)執(zhí)行函數(shù)返回true就返回true 字符方法 charAt()

1個(gè)參數(shù):基于0的字符位置

charAt()返回單字符字符串,charCodeAt()返回字符編碼 

截取方法 slice()

接受1至2個(gè)參數(shù),即要返回項(xiàng)的起始和結(jié)束位置

1、只有一個(gè)參數(shù)時(shí),返回該參數(shù)位置開始到末尾的所有項(xiàng)

2、參數(shù)為負(fù)數(shù)時(shí),加上數(shù)組長(zhǎng)度使其變?yōu)檎龜?shù)

slice() 參數(shù):開始位置,最后一個(gè)字符后面的位置 forEach() 對(duì)數(shù)組中每一項(xiàng)運(yùn)行執(zhí)行函數(shù),沒(méi)有返回值 charCodeAt()
splice

第1個(gè)參數(shù):要?jiǎng)h除的起始項(xiàng)位置;第2個(gè)參數(shù):要?jiǎng)h除的項(xiàng)數(shù);第3個(gè)及之后的參數(shù):要插入的項(xiàng)

1、刪除:指定2個(gè)參數(shù),要?jiǎng)h除的第一項(xiàng)的位置和要?jiǎng)h除的項(xiàng)數(shù)

2、插入:提供3個(gè)參數(shù),起始位置,0,要插入的項(xiàng)

3、替換:提供3個(gè)參數(shù),起始位置,刪除的項(xiàng)數(shù),要插入的項(xiàng)  

substr() 參數(shù):開始位置,字符個(gè)數(shù) map() 對(duì)數(shù)組中每一項(xiàng)運(yùn)行執(zhí)行函數(shù),返回每次調(diào)用的結(jié)果組成的數(shù)組 fromCharCode() 這是String對(duì)象的靜態(tài)函數(shù),將接受到的一或多個(gè)字符編碼轉(zhuǎn)變?yōu)樽址?/TD>
substring() 參數(shù):開始位置,最后一個(gè)字符后面的位置

filter()

對(duì)數(shù)組中的每一項(xiàng)運(yùn)行執(zhí)行函數(shù),返回執(zhí)行函數(shù)返回true的項(xiàng)組成的數(shù)組 模式匹配方法 match() 與RegExp的exec()方法相同,接受一個(gè)參數(shù),要么是一個(gè)正則表達(dá)式,要么是一個(gè)RegExp對(duì)象
位置方法 indexOf()

接受兩個(gè)參數(shù):要查找的項(xiàng)和(可選)表示查找起點(diǎn)位置的索引,indexOf()從數(shù)組的開頭向后查找,lastIndexOf()則從數(shù)組末尾向前查找
在比較項(xiàng)是否相等時(shí),會(huì)使用全等比較,沒(méi)有找到返回-1

indexOf()

從字符串中查找子字符串,返回子字符串的位置,沒(méi)有找到返回-1,indexOf()從前往后查找,lastIndexOf()從后往前找

第二個(gè)可選參數(shù)表示從哪個(gè)位置開始搜索 

縮小方法  reduce()

接受兩個(gè)參數(shù):

1、執(zhí)行函數(shù)(前一個(gè)值,當(dāng)前值,項(xiàng)的索引,數(shù)組),這個(gè)函數(shù)的返回值會(huì)作為第一個(gè)參數(shù)自動(dòng)傳入下一項(xiàng),第一次迭代發(fā)生在數(shù)組的第二項(xiàng)上

2、(可選)初始值

reduce()從數(shù)組第一項(xiàng)開始,遍歷至最后,reduceRight()從數(shù)組最后一項(xiàng)開始,遍歷至第一項(xiàng)

search() 接受一個(gè)參數(shù),和match()相同,返回字符串中第一個(gè)匹配項(xiàng)的索引,沒(méi)有找到匹配項(xiàng)時(shí)返回-1,search()始終從字符串開頭向后查找
lastIndexOf() lastIndexOf() reduceRight() replace() 接受兩個(gè)參數(shù):一個(gè)RegExp對(duì)象或字符串和一個(gè)字符串或函數(shù),若第一個(gè)參數(shù)為字符串,則只會(huì)替換第一個(gè)字符串,若想替換所有子字符串,第一個(gè)參數(shù)必須為指定了全局標(biāo)志(g)的正則表達(dá)式
          判斷方法 isArray() 靜態(tài)方法,接受一個(gè)參數(shù),返回這個(gè)參數(shù)是否為Array split()

基于指定的分隔符將一個(gè)字符串分割成多個(gè)字符串,并將結(jié)果放在一個(gè)數(shù)組中返回,分隔符可以是字符串,也可以是正則表達(dá)式。可選的第二個(gè)參數(shù)用于指定數(shù)組的最大長(zhǎng)度

說(shuō)明:

(1)上表中紅色部分表示在ES5版本中新增的方法,藍(lán)色部分為個(gè)人認(rèn)為比較常用的屬性和方法。

(2)ECMAScript中數(shù)組的每一項(xiàng)可以保存任意類型的數(shù)據(jù),并且數(shù)組的大小可以隨著數(shù)據(jù)的添加而自動(dòng)的動(dòng)態(tài)調(diào)整。

(3)使用Array構(gòu)造函數(shù)創(chuàng)建數(shù)組時(shí),如果傳入一個(gè)數(shù)值類型的參數(shù),則作為數(shù)組長(zhǎng)度處理,如果這個(gè)數(shù)值小于0或者不是一個(gè)整數(shù),會(huì)拋出RangeError異常(如果確實(shí)需要將這個(gè)數(shù)值作為數(shù)組第1項(xiàng),可以使用數(shù)組字面量),其它數(shù)值類型的參數(shù),則作為數(shù)組的第一項(xiàng)值處理,并且數(shù)值的長(zhǎng)度值為1。

[code]
try{
var a = new Array(-2);
}catch(e)
{
console.info(e);//RangeError
}
//var g = new Array(1.1);異常
var b = new Array(0);
var c = new Array(2);
var d = new Array('data');
var e = [-2];
var f = new Array(-1,-2);

console.info(b.length);//0
console.info(c.length);//2
console.info(d.length);//1
console.info(e.length);//1
console.info(f.length);//2



(4)判斷一個(gè)對(duì)象是否為數(shù)組時(shí),在ES5中可以直接使用Array.isArray(obj), 在不支持isArray方法的環(huán)境中時(shí),可以使用obj instanceof Array來(lái)判斷只有一個(gè)作用域的情況,但是更加穩(wěn)妥的判斷方法是利用Array對(duì)象的內(nèi)部屬性[[Class]]來(lái)判斷:
復(fù)制代碼 代碼如下:

function isArray(obj){
  return Object.prototype.toString.call(obj) == '[object Array]';
}

(5)關(guān)于String的slice()、sbustr()、substring(),如果只傳入了第一個(gè)參數(shù),則截取從第一個(gè)參數(shù)至末尾。當(dāng)傳入負(fù)參數(shù)時(shí):

  A、slice()會(huì)將負(fù)參數(shù)加上字符串長(zhǎng)度,使參數(shù)為正

  B、substr()會(huì)將負(fù)的第一個(gè)參數(shù)加上字符串的長(zhǎng)度,將負(fù)的第二個(gè)參數(shù)轉(zhuǎn)換為0

  C、substring()會(huì)將所有負(fù)參數(shù)轉(zhuǎn)換為0,如果第2個(gè)參數(shù)小于第1個(gè)參數(shù),會(huì)互換兩個(gè)參數(shù)

(6)關(guān)于String對(duì)象replace()方法的第二個(gè)參數(shù)

如果是字符串,可以使用一些特殊字符將正則表達(dá)式操作得到的值插入到結(jié)果字符串中,這些特殊字符有:

字符序列 替換文本
$$ $
$& 匹配整個(gè)模式的字符串,與RegExp.lastMatch的值相同
$' 匹配的子字符串之前的子字符串,與RegExp.leftContext的值相同
$` 匹配的子字符串之后的子字符串,與RegExp.rightContext的值相同
$n 匹配第n個(gè)捕獲組的子字符串,其中n等于1~9,如果正則表達(dá)式中沒(méi)有定義捕獲組,則使用空字符串
$nn 匹配第nn個(gè)捕獲組的子字符串,其中n等于01~99,如果正則表達(dá)式中沒(méi)有定義捕獲組,則使用空字符串

如果是函數(shù),這個(gè)函數(shù)接受的參數(shù):模式的匹配項(xiàng),第一個(gè)捕獲組的匹配項(xiàng),...,第n個(gè)捕獲組的匹配項(xiàng),模式的匹配項(xiàng)在字符串中的位置,原始字符串。函數(shù)應(yīng)該返回一個(gè)字符串,表示應(yīng)該被替換的匹配項(xiàng)。

(7)String對(duì)象的HTML方法

方法 輸出結(jié)果 方法 輸出結(jié)果
anchor(name) <a name="name">string</a> italics() <i>string</i>
big() <big>string</big> link(url) <a href="url">url</a>
bold() <b>string</b> small() <small>string</small>
fixed() <tt>string</tt> strike() <strike>string</strike>
fontcolor(color) <font color="color">string</font> sub() <sub>string</sub>
fontsize(size) <font size="size">string</font> sup() <sup>string</sup>

4、Number與Boolean

  String、Number和Boolean對(duì)象是相應(yīng)簡(jiǎn)單數(shù)據(jù)類型的包裝對(duì)象,他們都有一個(gè)共同的特征:作為構(gòu)造函數(shù)調(diào)用時(shí)是創(chuàng)建一個(gè)對(duì)象,作為一般函數(shù)調(diào)用時(shí)則是類型轉(zhuǎn)換。由于所有對(duì)象相應(yīng)的Boolean類型值都是true,所以需要特別注意的是new Boolean(false)在布爾運(yùn)算中會(huì)作為true去處理,這里的建議就是永遠(yuǎn)不要使用Boolean對(duì)象。

復(fù)制代碼 代碼如下:

var falseValue = false;
var falseObject = new Boolean(false);
console.info(typeof falseValue);//boolean
console.info(typeof falseObject);//object
console.info(falseValue instanceof Boolean);//false
console.info(falseObject instanceof Boolean);//true
console.info(falseValue && true);//false
console.info(falseObject && true);//true

String、Number和Boolean類型的變量可以直接調(diào)用相應(yīng)包裝對(duì)象的方法,實(shí)際上在后臺(tái)會(huì)自動(dòng)轉(zhuǎn)換為相應(yīng)包裝對(duì)象,然后調(diào)用方法。String和Boolean類型的字面量也可以直接調(diào)用包裝對(duì)象的方法,但是Number類型的字面量不能直接調(diào)用Number對(duì)象的方法。
復(fù)制代碼 代碼如下:

var num = 10;
console.info(num.toFixed(2));//10.00
//console.info(10.toFixed(2));//異常
console.info(false.toString());//false
console.info('abcdefg'.substr(3));//defg  

關(guān)于包裝對(duì)象的屬性和方法,String對(duì)象已經(jīng)在上一小節(jié)列出,Boolean對(duì)象除覆蓋了Object的toString()和valueOf()外沒(méi)什么特別需要注意的,下面再總結(jié)一下Number對(duì)象的屬性和方法。

靜態(tài)屬性(常量) 說(shuō)明 方法 說(shuō)明
Number.MAX_VALUE Number類型能夠表示的最大值 valueOf() 返回對(duì)象表示的基本類型的數(shù)值
Number.MIN_VALUE Number類型能夠表示的最小值 toLocaleString() 返回對(duì)象表示的數(shù)值的字符串形式
Number.NaN NaN toString() 返回對(duì)象表示的數(shù)值的字符串形式,可以接受一個(gè)表示進(jìn)制的參數(shù)
Number.NEGAIVE_INFINITY 負(fù)無(wú)窮 toFixed() 按照指定的小數(shù)位返回?cái)?shù)值的字符串表示,如果數(shù)值比指定的小數(shù)位多,會(huì)進(jìn)行四舍五入處理
Number.POSITIVE_INFINITY 正無(wú)窮 toExponential() 返回以指數(shù)表示法表示的數(shù)值的字符串形式,接受一個(gè)表示小數(shù)個(gè)數(shù)的參數(shù)
    toPrecision() 接受一個(gè)表示數(shù)值的所有數(shù)字的位數(shù)(不包括指數(shù)部分),可能返回固定大小格式,也可能返回指數(shù)形式

5、Date

  ECMAScript中的Date對(duì)象和Java中的java.util.Date一樣,采用UTC(Coordinated Universal Time,國(guó)際協(xié)調(diào)時(shí)間)1970年1月1日午夜(零時(shí))開始經(jīng)過(guò)的毫秒數(shù)來(lái)保存日期。

(1)創(chuàng)建日期對(duì)象

  A、構(gòu)造函數(shù):可以通過(guò)new Date()創(chuàng)建對(duì)象自動(dòng)獲取當(dāng)前日期和時(shí)間,也可以傳入表示日期的毫秒數(shù)來(lái)創(chuàng)建日期,還可以傳入和下面的Date.parse()與Date.UTC()相同的參數(shù)(在后臺(tái)會(huì)先調(diào)用Date.parse()或Date.UTC(),后臺(tái)調(diào)用Date.UTC()時(shí)是基于系統(tǒng)本地時(shí)區(qū)而非GMT創(chuàng)建的)來(lái)創(chuàng)建日期。

  B、Date.parse():接受一個(gè)表示日期的字符串參數(shù),然后嘗試根據(jù)這個(gè)字符串返回相應(yīng)日期的毫秒數(shù)。日期格式和具體的實(shí)現(xiàn)及地區(qū)有關(guān)。如果傳入的字符串不能表示日期,返回NaN。

  C、Date.UTC():返回表示日期的毫秒數(shù),參數(shù)分別是年份、基于0的月份、月中的哪一天(1~31)、小時(shí)(0~23)、分鐘、秒以及毫秒數(shù),這些參數(shù)中,前面兩個(gè)參數(shù)(年月)是必須的,沒(méi)有提供天數(shù)時(shí)默認(rèn)為1,其它參數(shù)沒(méi)有提供時(shí)默認(rèn)為0。

  D、Date.now():在ES5中新增,返回表示調(diào)用這個(gè)方法的日期和時(shí)間的毫秒數(shù)。這可以用來(lái)分析代碼執(zhí)行的時(shí)間:

復(fù)制代碼 代碼如下:

//支持Date.now()時(shí)     //不支持Date.now()的情況下
var start = Date.now(); var start = +new Date();
//doSomething();     //doSomething();
var end = Date.now();  var end = +new Date();
var time = end -start; var time = end - start;


(2)方法列表

方法 說(shuō)明 getter/setter方法 說(shuō)明
toLocaleString() 按照與瀏覽器設(shè)置的地區(qū)相適應(yīng)的格式返回日期和時(shí)間,其中時(shí)間一般以12小時(shí)制表示(通常含AM或PM) setTime(毫秒) 沒(méi)有對(duì)應(yīng)的UTC方法
toString() 通常返回帶有時(shí)區(qū)信息的日期和時(shí)間,其中時(shí)間一般以24小時(shí)制表示 setFullYear(年) 4位數(shù)的年份
valueOf() 返回日期的毫秒表示,這為日期的比較提供了便利 setMonth(月) 0~11,0表示一月,11表示十二月,超過(guò)11增加年份
toDateString() 以特定于實(shí)現(xiàn)的格式顯示星期幾、月、日和年 setDate(日) 超過(guò)范圍時(shí)會(huì)增加月份
toTimeString() 以特定于實(shí)現(xiàn)的格式顯示時(shí)、分、秒和時(shí)區(qū) setHours(時(shí)) 傳入值超過(guò)了23會(huì)增加天數(shù)
toLocaleDateString() 以特定于實(shí)現(xiàn)的格式顯示星期幾、月、日和年 setMinutes(分) 傳入值超過(guò)了59會(huì)增加小時(shí)數(shù)
toLocaleTimeString() 以特定于實(shí)現(xiàn)的格式顯示時(shí)、分、秒 setSeconds(秒) 傳入值超過(guò)了59會(huì)增加分鐘數(shù)
toUTCString() 以特定于實(shí)現(xiàn)的格式顯示完整的UTC日期 setMilliseconds(毫秒)  
toGMTString() 和toUTCString()等價(jià),主要是為了向后兼容而保留的 getDay() 沒(méi)有對(duì)應(yīng)的setter方法,0表示星期日,6為星期六
getTimezoneOfSet() 返回本地時(shí)間與UTC時(shí)間相差的毫秒數(shù)    

說(shuō)明:上表getter/setter列中,除了setTime()外,均有一套相應(yīng)UTC方法,比如對(duì)應(yīng)setFullYear()有g(shù)etFullYear()、setUTCFullYear()、getUTCFullYear()方法。

6、Error

(1)從ES3開始引入了try-catch語(yǔ)句,用于捕獲異常,結(jié)構(gòu)和Java中的異常處理類似。這里需要注意的是,在使用finally子句時(shí),如果里面有return語(yǔ)句,由于finally語(yǔ)句無(wú)論怎樣都會(huì)執(zhí)行,因此會(huì)覆蓋之前的return語(yǔ)句。

復(fù)制代碼 代碼如下:

function testFinally(){
try{
return 2;
}catch(error){
return 1;
}finally{
return 0;
}
}
console.info(testFinally());//0

說(shuō)明:按照規(guī)范,catch和finally子句只要有一個(gè)即可,但是在IE7的實(shí)現(xiàn)中有一個(gè)bug,沒(méi)有catch子句時(shí)就不會(huì)執(zhí)行finally子句,所以為了保證兼容性,每一個(gè)try都加上catch子句(如果需要在外層處理,可以把捕獲的異常使用throw向外拋出)。

(2)錯(cuò)誤類型

錯(cuò)誤類型 說(shuō)明
Error Error是所有錯(cuò)誤類型的父類,因此所有錯(cuò)誤類型共享了一組相同的屬性和方法,這個(gè)基類型的主要作用是供開發(fā)人員拋出自定義錯(cuò)誤
EvalError 在使用eval()函數(shù)而發(fā)生異常時(shí)拋出,簡(jiǎn)單的說(shuō),如果沒(méi)有把eval()當(dāng)成函數(shù)調(diào)用,就會(huì)拋出錯(cuò)誤
RangeError 在數(shù)值超出范圍時(shí)拋出,如定義數(shù)組時(shí)傳入負(fù)參數(shù)就會(huì)拋出RangeError
ReferenceError 找不到對(duì)象的情況下拋出
SyntaxError 把語(yǔ)法錯(cuò)誤的字符串傳入eval()時(shí)拋出
TypeError 在變量中保存著意外的類型,或者訪問(wèn)不存在的方法時(shí),會(huì)導(dǎo)致這種錯(cuò)誤
URIError 在使用encodeURI()或decodeURI(),URI格式不正確時(shí)拋出

注:這里只是簡(jiǎn)要列舉了一些內(nèi)建的錯(cuò)誤對(duì)象,沒(méi)有對(duì)錯(cuò)誤處理以及調(diào)試技術(shù)做過(guò)多的闡述,感興趣的朋友可以自行查找相關(guān)資料。

相關(guān)文章

最新評(píng)論