5 7 1 1 單體內建物件

2022-01-23 13:01:24 字數 1532 閱讀 9400

ecma-262對內建物件的定義是:「有ecmascript實現提供的,不依賴於宿主環境的物件,這些物件在ecmascript程式中執行之前就已經存在了。」意思就是說,開發人員不必顯式的例項化內建物件,因為它們已經例項化了。

global物件

global(全域性)物件可以說是ecmascript中最特別的乙個物件了,因為不管你從什麼角度上看,這個物件都是不存在的。ecmascript中的global物件在某種意義上是作為乙個終極的「兜底兒物件」來定義的。換句話講,不屬於任何其他物件的屬性和方法,最終都是它的屬性和方法。事實上,沒有全域性變數或全域性函式;所有在全域性作用域中定義的屬性和函式,都是global物件的屬性。

url編碼方法

global物件的encodeuri()和encodeuricomponent()方法可以對uri(uniform resource identifiers,通用資源識別符號)進行編碼,以便傳送給送瀏覽器。有效的uri中不能包含某些字元,例如空格。而這兩個uri編碼方法就可以對uri進行編碼,它們用特殊的utf-8編碼替換所有無效的字元,而從讓瀏覽器能夠接受和理解。

其中,encodeuri()主要用於整個uri,而encodeuricomponent()主要用於對uri中的某一段進行編碼。它們的主要區別在於,encodeuri()不會對本身屬於uri的特殊字元進行編碼,例如冒號、正斜槓、問號和井字型大小;而encodeuricomponent()則會對它發現的任何非標準字元進行編碼。

使用encodeuri()編碼後的結果是除了空格之外的其他字元都原封不動,只有空格被替換成了%20。而encodeuricomponent()方法則會使用對應的編碼替換所有非字母數字字元。這也正是可以對整個uri使用encodeuri(),而只能對附加現有的uri後面的字串使用encodeuricomponent()的原因所在。

注:一般來數,我們使用encodeuricomponent()方法的時候要比使用encodeuri()更多,因為在實踐中更常見的是對查詢字串引數而不是對基礎uri進行編碼。

與encodeuri()和encodeuricomponent()方法對應的兩個方法分別是decodeuri()和decodeuricomponent()。其中,decodeuri()只能對使用的encodeuri()替換的字元進行解碼。例如,它可以將%20替換成乙個空格,但不會對%23座任何處理,因為%23表示井號(#),而井號不是使用encodeuri()替換的。同樣的,decodeuricomponent()能夠解碼使用encodeuricomponent()編碼的所有字元,即它可以解碼任何特殊字元的編碼。

注:uri方法encodeuri()、encodeuricomponent()、decodeuri()和decodeuricomponent()用於替換已經被ecma-262第3版廢棄的escape()和unescape()方法。uri方法能夠編碼所有unicode字元,而原來的方法只能正確的編碼ascii字元。因此在開發實踐中,特別是在產品級的**中,一定要使用uri方法,不要使用escape()和unescape()方法;

單體內建物件 單體內建物件

1 global物件 所有全域性作用域定義的屬性與函式,都是global物件的屬性。1.1 uri編碼方法 encodeuri 不會對本身屬於uri的特殊符號進行編碼。uri解碼方法 decodeuri 只能對使用encodeuri 替換的字元進行解碼 decodeuricomponent 能夠解碼...

單體內建物件 單體內建物件

內建物件 由ecmascript實現提供的,不依賴宿主環境的物件,這些物件再es程式執行之前就已經存在 global物件 global全域性物件是乙個特別的物件 兜底物件 不屬於其他物件的屬性和方法,都屬於global物件。如 isnan isfinite parseint parsefloat 註...

單體內建物件 單體內建物件

ecmascript 262對內建物件的定義是 由ecmascript實現提供的,不依賴於宿主環境的物件,這些物件在ecmascript程式執行之前就已經存在了。意思就是說,開發人員不必顯示地例項化內建物件,因為它們已經例項化了。如object,array,string。ecmascript還定義了...