內建對象
定義:由ECMAScript實現提供的、獨立於宿主環境的所有對象,在ECMAScript程式開始執行時出現。
由定義可知開發人員不必明確執行個體化內建對象,它已被執行個體化了。在ECMAScript-262隻定義了兩個內建對象,即Global和Math
Global
Global對象是ECMAScript中最特別的對象,因為實際上它根本不存在。
由於在ECMAScript中不存在獨立的對象,所有函數都必須是某個對象的方法,如前面提到的isNaN()、isFinite()、parseInt()和parseFloat()等,都是Global對象的方法。
escape()、encodeURI()、encodeURIComponent()、unescape()、decodeURI()、decodeURIComponent()、eval()等都是Global的方法。
escape() && encodeURI() && encodeURIComponent()
這幾個方法用於對字串進行編碼。
escape不編碼字元有69個:*,+,-,.,/,@,_,0-9,a-z,A-Z
encodeURI不編碼字元有82個:!,#,$,&,',(,),*,+,,,-,.,/,:,;,=,?,@,_,~,0-9,a-z,A-Z
encodeURIComponent不編碼字元有71個:!, ',(,),*,-,.,_,~,0-9,a-z,A-Z
escape():不建議用,已淘汰
encodeURI():對URL進行編碼,樣本:
encodeURI("http://www.google.com/a file with spaces.html")
// outputs http://www.google.com/a%20file%20with%20spaces.html
encodeURIComponent():對參數進行編碼,樣本:
param1 = encodeURIComponent("http://xyz.com/?a=12&b=55")
url ="http://domain.com/?param1="+ param1 +"¶m2=99";
// outputs http://www.domain.com/?param1=http%3A%2F%2Fxyz.com%2F%Ffa%3D12%26b%3D55¶m2=99
unescape() && decodeURI() && decodeURIComponent()
這幾個方法用於對字串進行解碼。
eval()
eval()可能是ECMAScript語言中最強大的方法,該方法就像整個JavaScript的解釋程式,接受一個參數,即要執行的ECMAScript(或JavaScript)字串。
樣本:
var msg="Hello world";
eval("alert(msg)");//alert "Hello world"
注意,eval()功能很強大,但也很危險,特別在用eval執行使用者輸入的內容時,可能會被代碼注入。
Global對象的所有屬性
Global不只有方法,它還有屬性,Global對象的所有屬性:
屬性 |
說明 |
undefined |
Undifined類型的字面量 |
NaN |
非數的專用數值 |
Infinity |
無窮大值的專用數值 |
Object |
Object的建構函式 |
Array |
Array 的建構函式 |
Function |
Function 的建構函式 |
Boolean |
Boolean 的建構函式 |
String |
String 的建構函式 |
Number |
Number 的建構函式 |
Date |
Date 的建構函式 |
RegExp |
RegExp 的建構函式 |
Error |
Error 的建構函式 |
EvalError |
EvalError 的建構函式 |
RangeError |
RangeError 的建構函式 |
ReferenceError |
ReferenceError 的建構函式 |
SyntaxError |
SyntaxError 的建構函式 |
TypeError |
TypeError 的建構函式 |
URIError |
URIError 的建構函式 |