JS-Global對象

全局對象

全局屬性和函數可用於所有內建的 JavaScript 對象

描述

全局對象是預定義的對象,作爲 JavaScript 的全局函數和全局屬性的佔位符。通過使用全局對象,可以訪問所有其他所有預定義的對象、函數和屬性。全局對象不是任何對象的屬性,所以它沒有名稱。

在頂層 JavaScript 代碼中,可以用關鍵字 this 引用全局對象。但通常不必用這種方式引用全局對象,因爲全局對象是作用域鏈的頭,這意味着所有非限定性的變量和函數名都會作爲該對象的屬性來查詢。例如,當JavaScript 代碼引用 parseInt() 函數時,它引用的是全局對象的 parseInt 屬性。全局對象是作用域鏈的頭,還意味着在頂層 JavaScript 代碼中聲明的所有變量都將成爲全局對象的屬性。

全局對象只是一個對象,而不是類。既沒有構造函數,也無法實例化一個新的全局對象。

在 JavaScript 代碼嵌入一個特殊環境中時,全局對象通常具有環境特定的屬性。實際上,ECMAScript 標準沒有規定全局對象的類型,JavaScript 的實現或嵌入的 JavaScript 都可以把任意類型的對象作爲全局對象,只要該對象定義了這裏列出的基本屬性和函數。例如,在允許通過 LiveConnect 或相關的技術來腳本化 Java 的 JavaScript 實現中,全局對象被賦予了這裏列出的 java 和 Package 屬性以及 getClass() 方法。而在客戶端 JavaScript 中,全局對象就是 Window 對象,表示允許 JavaScript 代碼的 Web 瀏覽器窗口。

全局方法

1. decodeURI

可對 encodeURI() 函數編碼過的 URI 進行解碼

 返回值

URIstring 的副本,其中的十六進制轉義序列將被它們表示的字符替換。

decodeURI(URIstring)

參數

  • 必須
    • URIstring 一個字符串,含有要解碼的 URI 或其他要解碼的文本。
var test="www.zshgrwz.cn/360  "

document.write(encodeURI(test)+ "<br />")
document.write(decodeURI(test))

結果:
    www.zshgrwz.cn/360%20%20
    www.zshgrwz.cn/360

2. decodeURIComponent

可對 encodeURIComponent() 函數編碼的 URI 進行解碼

 返回值

URIstring 的副本,其中的十六進制轉義序列將被它們表示的字符替換。

decodeURIComponent(URIstring)

參數

  • 必須
    • URIstring 一個字符串,含有編碼 URI 組件或其他要解碼的文本。
var test="www.zshgrwz.cn/360  "

document.write(encodeURIComponent(test)+ "<br />")
document.write(decodeURIComponent(test))

結果:
    www.zshgrwz.cn%2F360%20%20
    www.zshgrwz.cn/360

3. encodeURI

可把字符串作爲 URI 進行編碼

 返回值

URIstring 的副本,其中的某些字符將被十六進制的轉義序列進行替換。

說明

該方法不會對 ASCII 字母和數字進行編碼,也不會對這些 ASCII 標點符號進行編碼: - _ . ! ~ * ’ ( ) 。

該方法的目的是對 URI 進行完整的編碼,因此對以下在 URI 中具有特殊含義的 ASCII 標點符號,encodeURI() 函數是不會進行轉義的:;/?:@&=+$,#

提示:如果 URI 組件中含有分隔符,比如 ? 和 #,則應當使用 encodeURIComponent() 方法分別對各組件進行編碼。

encodeURI(URIstring)

參數

  • 必須
    • URIstring 一個字符串,含有 URI 或其他要編碼的文本。
var test = "www.zshgrwz.cn/360"
var test2 =  "www.zshgrwz.cn/3 6 0"

document.write(encodeURI(test)+ "<br />")
document.write(encodeURI(test2)+ "<br />")
document.write(encodeURI("&,/?#=+:@$"))

結果:
    www.zshgrwz.cn/360
    www.zshgrwz.cn/3%206%200
    &,/?#=+:@$

4. encodeURIComponent

數可把字符串作爲 URI 組件進行編碼

 返回值

URIstring 的副本,其中的某些字符將被十六進制的轉義序列進行替換。

說明

該方法不會對 ASCII 字母和數字進行編碼,也不會對這些 ASCII 標點符號進行編碼: - _ . ! ~ * ’ ( ) 。

其他字符(比如 :;/?:@&=+$,# 這些用於分隔 URI 組件的標點符號),都是由一個或多個十六進制的轉義序列替換的。

提示:請注意 encodeURIComponent() 函數 與 encodeURI() 函數的區別之處,前者假定它的參數是 URI 的一部分(比如協議、主機名、路徑或查詢字符串)。因此 encodeURIComponent() 函數將轉義用於分隔 URI 各個部分的標點符號。

encodeURIComponent(URIstring)

參數

  • 必須
    • URIstring 一個字符串,含有 URI 組件或其他要編碼的文本。
var test="www.zshgrwz.cn/360  "

document.write(encodeURIComponent(test)+ "<br />")
document.write(encodeURIComponent(test))
document.write(encodeURIComponent("&,/?#=+:@$"))

結果:
    www.zshgrwz.cn%2F360%20%20
    www.zshgrwz.cn/360
    %26%2C%2F%3F%23%3D%2B%3A%40%24

5. escape

對字符串進行編碼,這樣就可以在所有的計算機上讀取該字符串

註釋:ECMAScript v3 反對使用該方法,應用使用 decodeURI() 和 decodeURIComponent() 替代它。

6. eval

計算某個字符串,並執行其中的的 JavaScript 代碼

返回值

通過計算 string 得到的值(如果有的話)。

說明

該方法只接受原始字符串作爲參數,如果 string 參數不是原始字符串,那麼該方法將不作任何改變地返回。因此請不要爲 eval() 函數傳遞 String 對象來作爲參數。

如果試圖覆蓋 eval 屬性或把 eval() 方法賦予另一個屬性,並通過該屬性調用它,則 ECMAScript 實現允許拋出一個 EvalError 異常。

拋出

如果參數中沒有合法的表達式和語句,則拋出 SyntaxError 異常。

如果非法調用 eval(),則拋出 EvalError 異常。

如果傳遞給 eval() 的 Javascript 代碼生成了一個異常,eval() 將把該異常傳遞給調用者。

提示:雖然 eval() 的功能非常強大,但在實際使用中用到它的情況並不多。

eval(string)

參數

  • 必需
    • string 要計算的字符串,其中含有要計算的 JavaScript 表達式或要執行的語句。
eval("console.log('asd');console.log('asd');")
// asd asd

7. isFinite

用於檢查其參數是否是無窮大

返回值

如果 number 是有限數字(或可轉換爲有限數字),那麼返回 true。否則,如果 number 是 NaN(非數字),或者是正、負無窮大的數,則返回 false。

提示:如果參數number不爲數字則轉化爲數字。

isFinite(number)

參數

  • 必需
    • number 要檢測的數字。
document.write(isFinite(Math.pow(10000000,50))+ "<br />")
document.write(isFinite(-5)+ "<br />")
document.write(isFinite(100-63)+ "<br />")
document.write(isFinite(-0)+ "<br />")
document.write(isFinite("zsh")+ "<br />")
document.write(isFinite("2017")+ "<br />")

結果:
    false
    true
    true
    true
    false
    true

8. isNaN

用於檢查其參數是否是非數字值

返回值

如果 x 是特殊的非數字值 NaN(或者能被轉換爲這樣的值),返回的值就是 true。如果 x 是其他值,則返回 false。

isNaN(x)

參數

  • 必需
    • x 要檢測的值。
document.write(isNaN(Math.pow(10000000,50))+ "<br />")
document.write(isNaN(-5)+ "<br />")
document.write(isNaN(100-63)+ "<br />")
document.write(isNaN(-0)+ "<br />")
document.write(isNaN("zsh")+ "<br />")
document.write(isNaN("2017")+ "<br />")

結果:
    false
    false
    false
    false
    true
    false

9. Number

把對象的值轉換爲數字

返回值

如果參數是 Date 對象,Number() 返回從 1970 年 1 月 1 日至今的毫秒數。

如果對象的值無法轉換爲數字,那麼 Number() 函數返回 NaN。

Number(object)

參數

  • 必需
    • object JavaScript 對象
var arr = [1];

document.write(Number(true)+ "<br />");
document.write(Number(new Date())+ "<br />");
document.write(Number("158")+ "<br />");
document.write(Number("zsh")+ "<br />");
document.write(Number(arr)+ "<br />");

結果:
    1
    1499436337950
    158
    zsh
    1

10. parseFloat

可解析一個字符串,並返回一個浮點數。
該函數指定字符串中的首個字符是否是數字。如果是,則對字符串進行解析,直到到達數字的末端爲止,然後以數字返回該數字,而不是作爲字符串。

返回值

返回解析後的數字。

說明

parseFloat 是全局函數,不屬於任何對象。

parseFloat 將它的字符串參數解析成爲浮點數並返回。如果在解析過程中遇到了正負號(+ 或 -)、數字 (0-9)、小數點,或者科學記數法中的指數(e 或 E)以外的字符,則它會忽略該字符以及之後的所有字符,返回當前已經解析到的浮點數。同時參數字符串首位的空白符會被忽略。

如果參數字符串的第一個字符不能被解析成爲數字,則 parseFloat 返回 NaN。

提示:您可以通過調用 isNaN 函數來判斷 parseFloat 的返回結果是否是 NaN。如果讓 NaN 作爲了任意數學運算的操作數,則運算結果必定也是 NaN。

註釋:開頭和結尾的空格是允許的。

提示:如果字符串的第一個字符不能被轉換爲數字,那麼 parseFloat() 會返回 NaN。

提示:如果只想解析數字的整數部分,請使用 parseInt() 方法。

parseFloat(string)

參數

  • 必需
    • string 要被解析的字符串。
var arr = [1];

document.write(parseFloat(arr))
document.write(parseFloat("10")) 
document.write(parseFloat("10.00")) 
document.write(parseFloat("10.33")) 
document.write(parseFloat("34 45 66")) 
document.write(parseFloat(" 60 ")) 
document.write(parseFloat("40 years"))
document.write(parseFloat("He was 40"))

結果:
    1
    10
    10
    10.33
    34
    60
    40
    NaN

11. parseInt

可解析一個字符串,並返回一個整數

返回值

返回解析後的數字。

說明

當參數 radix 的值爲 0,或沒有設置該參數時,parseInt() 會根據 string 來判斷數字的基數。

舉例,如果 string 以 “0x” 開頭,parseInt() 會把 string 的其餘部分解析爲十六進制的整數。如果 string 以 0 開頭,那麼 ECMAScript v3 允許 parseInt() 的一個實現把其後的字符解析爲八進制或十六進制的數字。如果 string 以 1 ~ 9 的數字開頭,parseInt() 將把它解析爲十進制的整數。

註釋:只有字符串中的第一個數字會被返回。

註釋:開頭和結尾的空格是允許的。

提示:如果字符串的第一個字符不能被轉換爲數字,那麼 parseInt() 會返回 NaN。

parseInt(string, radix)

參數

  • 必需
    • string 要被解析的字符串。
  • 可選
    • radix 表示要解析的數字的基數。該值介於 2 ~ 36 之間。如果省略該參數或其值爲 0,則數字將以 10 爲基礎來解析。如果它以 “0x” 或 “0X” 開頭,將以 16 爲基數。如果該參數小於 2 或者大於 36,則 parseInt() 將返回 NaN。
var arr = [1];

document.write(parseInt(arr))
// 1

parseInt("10");         //返回 10
parseInt("19",10);      //返回 19 (10+9)
parseInt("11",2);       //返回 3 (2+1)
parseInt("17",8);       //返回 15 (8+7)
parseInt("1f",16);      //返回 31 (16+15)
parseInt("010");        //未定:返回 10 或 8

12.String

把對象的值轉換爲字符串

String(object)

參數

  • 必需
    • string JavaScript 對象。
var test1= new Boolean(1);
var test2= new Boolean(0);
var test3= new Boolean(true);
var test4= new Boolean(false);
var test5= new Date();
var test6= new String("999 888");
var test7=12345;

var arr = [12,35,65];
document.write(String(arr))
document.write(String(test1)+ "<br />");
document.write(String(test2)+ "<br />");
document.write(String(test3)+ "<br />");
document.write(String(test4)+ "<br />");
document.write(String(test5)+ "<br />");
document.write(String(test6)+ "<br />");
document.write(String(test7)+ "<br />");

結果:
    12,35,65
    true
    false
    true
    false
    Wed Oct 28 00:17:40 UTC+0800 2009
    999 888
    12345

全局屬性

1. infinity

代表正的無窮大的數值

說明

無法使用 for/in 循環來枚舉 Infinity 屬性,也不能用 delete 運算符來刪除它。
Infinity 不是常量,可以把它設置爲其他值。

Infinity


var t1=1.7976931348623157E+10308
document.write(t1)

document.write("<br />")

var t2=-1.7976931348623157E+10308
document.write(t2)

結果:
    Infinity
    -Infinity

2. NaN

用於引用特殊的非數字值

說明

無法使用 for/in 循環來枚舉 NaN 屬性,也不能用 delete 運算符來刪除它。
NaN 不是常量,可以把它設置爲其他值。

提示:請使用 isNaN() 來判斷一個值是否是數字。原因是 NaN 與所有值都不相等,包括它自己。

NaN

var test1="300"
var test2="Hello World!"

document.write(Number(test1)+ "<br />")
document.write(Number(test2)+ "<br />")

document.write(isNaN(test1)+ "<br />")
document.write(isNaN(test2))

結果:
    300
    NaN
    false
    true

3. undefined

用於存放 JavaScript 的 undefined 值

說明

無法使用 for/in 循環來枚舉 undefined 屬性,也不能用 delete 運算符來刪除它。
undefined 不是常量,可以把它設置爲其他值。
當嘗試讀取不存在的對象屬性時也會返回 undefined。

提示:只能用 === 運算來測試某個值是否是未定義的,因爲 == 運算符認爲 undefined 值等價於 null。

註釋:null 表示無值,而 undefined 表示一個未聲明的變量,或已聲明但沒有賦值的變量,或一個並不存在的對象屬性。

undefined

var t1=""
var t2

if (t1===undefined) {document.write("t1 is undefined")}
if (t2===undefined) {document.write("t2 is undefined")}


結果:
    t2 is undefined

文檔內容出自 W3cSchool和菜鳥教程,
如需查看更詳細的有關內容 請登錄 http://www.w3school.com.cn/http://www.runoob.com/

發佈了44 篇原創文章 · 獲贊 12 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章