1. 本地對(duì)象
? ? ? ECMA-262把本地對(duì)象(native object)定義為“獨(dú)立于宿主環(huán)境的ECMAScript實(shí)現(xiàn)提供的對(duì)象”。
此處的宿主環(huán)境厂抖,簡(jiǎn)單來說就是用戶的機(jī)器環(huán)境茎毁,包括操作系統(tǒng)和瀏覽器。
本地對(duì)象包括如下內(nèi)容:Object忱辅、Function七蜘、String、Array耕蝉、Boolean崔梗、Number、Date垒在、RegExp蒜魄、Error、EvalError场躯、RangeError谈为、ReferenceError、SyntaxError踢关、TypeError伞鲫、URIError。由此可知签舞,本地對(duì)象是ECMA-2定義的類(引用類型)秕脓。
ECMA-262把內(nèi)置對(duì)象(built-in object)定義為“由ECMAScript實(shí)現(xiàn)提供的,獨(dú)立與宿主環(huán)境的所有對(duì)象儒搭,在ECMAScript程序開始執(zhí)行時(shí)出現(xiàn)”吠架。這意味著開發(fā)者不必明確實(shí)例化內(nèi)置對(duì)象,它已經(jīng)被實(shí)例化了搂鲫。ECMA只定義了兩個(gè)內(nèi)置對(duì)象傍药,即Global和Math(它們也是本地對(duì)象,根據(jù)定義,所有內(nèi)置對(duì)象都是本地對(duì)象)拐辽。
1)Math對(duì)象的常見屬性:
?????? E(算術(shù)常量e拣挪,即自然對(duì)數(shù)的底數(shù),約為2.718)
?????? PI(圓周率俱诸,約為3.14159)菠劝。
? ? ?Math對(duì)象的常見方法:
???????? Math.max(x,y): 返回x和y中較大的值;
????????Math. min(x,y): 返回x和y中較小的值乙埃; ? ? ??
? ? ? ?? Math.random(): 返回0~1之間的隨機(jī)數(shù)闸英;
? ? ? ?? Math.round(x): 對(duì)數(shù)四舍五入; ? ? ? ? ? ??
???????? Math.floor(x): 對(duì)數(shù)向下取整介袜; ? ? ? ? ? ? ? ? ?
? ? ? ? ?Math. ceil(x): 對(duì)數(shù)向上取整甫何;?
2)Global對(duì)象是ECMAScript中最特別的對(duì)象,因?yàn)閷?shí)際上它根本不存在遇伞,不信辙喂,在瀏覽器console中輸入Global,報(bào)錯(cuò)鸠珠。
? ? ?全局對(duì)象是預(yù)定義的對(duì)象巍耗,作為JavaScript全局函數(shù)和全局屬性的占位符。全局對(duì)象不是任何對(duì)象的屬性渐排,所以它沒有名稱炬太。
在頂層JavaScript代碼中,可以用關(guān)鍵字this來引用全局對(duì)象驯耻。但通常不必用這種方式引用全局對(duì)象亲族,因?yàn)?b>全局對(duì)象是作用域鏈的頭,這意味著所有非限定性的變量和函數(shù)名都會(huì)作為該對(duì)象的屬性來查詢可缚。例如霎迫,當(dāng)JavaScript代碼引用parseInt函數(shù)時(shí),它引用的是全局對(duì)象的parseInt屬性帘靡。
全局對(duì)象是作用域鏈的頭知给,這意味著在頂層JavaScript中申明的變量都將成為全局對(duì)象的屬性。
? ? ?全局對(duì)象只是一個(gè)對(duì)象描姚,而不是類涩赢。即沒有構(gòu)造函數(shù),也無法實(shí)例化一個(gè)新的全局對(duì)象轩勘。
? ? ?頂層屬性(全局屬性):
? ? ? ? ? ?NaN: 指示某個(gè)值是不是數(shù)字值谒主;
????????? undefined: 未定義的值;
?????????? Infinity: 正的無窮大的數(shù)值赃阀。?
? ? ?頂層函數(shù)(全局方法):
? ? ? ? ? ?isNaN(): 檢測(cè)某個(gè)值是否為數(shù)值; ? ? ? ? ? ? ? ? ? ? ? ? ? ??
????????? isFinite(): 檢測(cè)某個(gè)值是否為無窮大的值;
? ? ? ? ? ?Number():把對(duì)象的值轉(zhuǎn)換為數(shù)值榛斯; ? ? ? ? ? ? ? ? ? ? ? ??
?????????? String(): 把對(duì)象的值轉(zhuǎn)換為字符串观游; ? ? ? ? ? ?
? ? ? ? ?? Boolean(): 把對(duì)象的值轉(zhuǎn)換為布爾值;
? ? ? ? ? ?parseInt(): 解析一個(gè)字符串并返回整數(shù)驮俗; ? ? ? ? ? ? ? ? ? ?
?????????? parseFloat(): 解析一個(gè)字符串并返回浮點(diǎn)值懂缕;
? ? ? ? ? ?encodeURI(): 將字符創(chuàng)編碼為URI; ? ? ? ? ? ? ? ? ? ? ? ??
?????????? decodeURI(): 解碼某個(gè)編碼的URI王凑;
? ? ? ? ? ?encodeURIComponent(): 將字符串編碼為URI組件搪柑; ? ?
?????????? decodeURIComponent(): 解碼某個(gè)編碼的URI組件;?
? ? ? ? ? ?escape(): 對(duì)字符進(jìn)行編碼索烹; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? ? ? ?? unescape(): 對(duì)由escape編碼的字符串進(jìn)行解碼工碾;
? ? ? ? ? ?eval(): 計(jì)算JavaScript字符串,并把它作為腳本代碼來執(zhí)行百姓;
? ? ? 所有非本地對(duì)象都是宿主對(duì)象(host Object)渊额,即由ECMAScript實(shí)現(xiàn)的宿主環(huán)境提供的對(duì)象。
? ? ? 所有的BOM和DOM對(duì)象都是宿主對(duì)象垒拢。
? ? ? 顧名思義旬迹,就是開發(fā)人員自己定義的對(duì)象,javascript允許使用自定義對(duì)象求类,使javascript得到擴(kuò)充奔垦。
? ? ? 本地對(duì)象是ECMA官方定義好的對(duì)象;內(nèi)置對(duì)象也是本地對(duì)象尸疆,只包括Global對(duì)象和Math對(duì)象椿猎;宿主對(duì)象包括BOM和DOM對(duì)象。