《JavaScript高級程序設計》讀書筆記(十一):內置對象Global
內置對象
定義:由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 的構造函數 |

浙公網安備 33010602011771號