瞭解 JavaScript 中的內建物件

發表於2012-07-26

來源:IBM developerworks

所有程式語言都具有內部(或內建的)物件來建立 語言的基本功能。內部物件是 您編寫自定義程式碼所用語言的基礎, 該程式碼基於您的想象實現自定義功能。JavaScript 有許多 將其定義為語言的內部物件。本文介紹了一些 最常用的物件,並簡要介紹了它們 有哪些功能以及如何使用這些功能。

Number

JavaScript Number 物件是 一個數值包裝器。您可以將其與 new 關鍵詞結合使用,並將其設定為一個稍後要在 JavaScript 程式碼中使用的變數:

或者,您可以通過將一個變數設定為一個數值來建立一個 Number 物件。然後,該變數將 能夠訪問該物件可用的屬性和方法。

除了儲存數值, Number 物件包含各種屬性和 方法,用於操作或檢索關於數字的資訊。 Number 物件可用的所有屬性 都是隻讀常量,這意味著它們的值始終保持 不變,不能更改。有 4 個屬性包含在 Number 物件裡:

●MAX_VALUE

●MIN_VALUE

●NEGATIVE_INFINITY

●POSITIVE_INFINITY

MAX_VALUE 屬性返回 1.7976931348623157e+308 值,它是 JavaScript 能夠處理的最大數字:

另外,使用 MIN_VALUE 返回 5e-324 值,這是 JavaScript 中最小的數字:

NEGATIVE_INFINITY 是 JavaScript 能夠處理的最大負數,表示為 -Infinity:

POSITIVE_INFINITY 屬性是大於 MAX_VALUE 的任意數,表示為 Infinity:

Number 物件還有一些方法,您可以 用這些方法對數值進行格式化或進行轉換。這些方法包括:

●toExponential

●toFixed

●toPrecision

●toString

●valueOf

每種方法基本上執行如其名稱所暗示的操作。例如, toExponential 方法以指數形式返回 數字的字串表示。每種 方法的獨特之處在於它接受的引數。 toExponential 方法有一個可選引數, 可用於設定要使用多少有效數字, toFixed 方法基於所傳遞的引數確定小數 精度, toPrecision 方法基於所傳遞的引數確定 要顯示的有效數字。

JavaScript 中的每個物件都包含一個 toString 和 valueOf 方法,因此這些方法 在前面的章節中不介紹。 toString 方法返回 數字的字串表示(在本例中),但是在其他物件中,它返回 相應物件型別的字串表示。valueOf 方法返回撥用它的物件型別的原始值,在本例中為 Number 物件。

僅 Number 物件似乎並不十分 強大,但它是任何程式語言的一個重要組成部分, JavaScript 也不例外。JavaScript Number 物件為任何 數學程式提供基礎,這基本上是所有 程式語言的基礎。

 

Boolean

Boolean 在嘗試 用 JavaScript 建立任何邏輯時是必要的。Boolean 是一個 代表 true 或 false 值的物件。 Boolean 物件有多個值,這些值 相當於 false 值(0、 -0、null 或 “” [一個空字串]),未定義的 (NaN),當然還有 false。所有其他布林 值相當於 true 值。該物件可以 通過 new 關鍵詞進行例項化,但通常是 一個被設為 true 或 false 值的變數:

Boolean 物件包括 toString 和 valueOf 方法,儘管您不太可能需要使用這些方法。 Boolean 最常用於在 條件語句中 true 或 false 值的簡單判斷。 布林值和條件語句的組合提供了一種使用 JavaScript 建立邏輯的方式。此類條件語句的示例包括 if、if…else、 if…else…if 以及 switch 語句。當與 條件語句結合使用時,您可以基於 您編寫的條件使用布林值確定結果。清單 1 顯示了 條件語句與布林值相結合的一個簡單示例。

清單 1. 與布林值相結合的條件語句

不言而喻,Boolean 物件 是 JavaScript 一個極其重要的組成部分。如果沒有 Boolean 物件, 在條件語句內便無法進行判斷。

 

String

JavaScript String 物件是 文字值的包裝器。除了儲存文字, String 物件包含一個屬性和各種 方法來操作或收集有關文字的資訊。與 Boolean 物件類似, String 物件不需要進行例項化 便能夠使用。例如,您可以將一個變數設定為一個字串, 然後 String 物件的所有屬性或 方法都可用於該變數:

String 物件只有一個 屬性,即 length,它是 只讀的。length 屬性可用於只返回 字串的長度:您不能在外部修改它。隨後的程式碼 提供了使用 length 屬性確定一個字串中的字元數的示例:

該程式碼的結果是 9,因為 兩個詞之間的空格也作為一個字元計算。

在 String 物件中有相當多的方法可用於操作和收集有關文字的資訊。 以下是可用的方法列表:

●charAt

●charCodeAt

●concat

●fromCharCode

●indexOf

●lastIndexOf

●match

●replace

●search

●slice

●split

●substr

●substring

●toLowerCase

●toUpperCase

chartAt 方法可用於基於您作為引數傳遞的索引檢索 特定字元。 下面的程式碼說明了如何返回 字串的第一個字元:

如果您需要相反的結果,有幾個方法 可返回字串中的指定字元或字符集,而不 使用索引返回字元。這些方法包括 indexOf 和 lastIndexOf,這兩個方法都包含兩個 引數:searchString 和 start。 searchString 引數是起始索引, start 引數告訴方法 從哪裡開始搜尋。這兩個方法之間的區別在於, indexOf 返回第一個索引, lastIndexOf 返回最後一個索引。

charCodeAt 方法類似於 charAt:惟一的區別在於它返回 Unicode 字元。另一種與 Unicode 相關的方法(包括在 String 物件中)是 fromCharCode,它將 Unicode 轉換為 字元。

如果您想要組合字串,可以使用加號 (+) 將這些字串加起來,或者您可以 更適當地使用 concat 方法。該 方法接受無限數量的字串引數,連線它們,並 將綜合結果作為新字串返回。清單 2 展示瞭如何使用 concat 例項將多個字串合併成一個。

清單 2. 使用 concat 方法合併多個字串

還有一組 String 方法 接受正規表示式作為一個引數,以查詢或修改一個字串。 這些包括 match、 replace 和 search 方法。match 方法使用正則 表示式搜尋特定字串並返回所有的匹配的字串。 replace 方法實際上接受子字串或 正規表示式和替換字串作為其第二個引數, 用替換字串更換所有匹配項,並返回更新的 字串。這些方法的最後一個是 search 方法,它搜尋正規表示式的匹配結果並返回其 位置。

如果需要修改字串,有多個方法派得上用場。 第一個方法是 slice 方法,它基於索引或 索引的開始和結尾的組合提取 並返回一個字串的一部分。另一個方法是 split 方法。 split 方法每當找到分隔符引數時就將一個字串分割成一系列 子字串。例如,如果將逗號 (,) 作為一個引數傳遞,那麼字串 將在每個逗號處分割成一個新的子字串。能夠修改字串的方法還包括 substr 方法,它 基於指定為引數的起始位置和長度,從字串提取字元, 還有 substring 方法,該方法基於指定為引數的兩個索引從一個字串提取字元。能夠改變字串的最後的方法分別是 toLowerCase 和 toUpperCase,它們將字串中的字元分別轉換為 小寫和大寫字母。這些方法在 比較字串值時非常有用,因為字串有時可能 大小寫不一致。這些方法確保您在比較 值,而不是大小寫。

 

Date

JavaScript Date 物件提供了一種方式 來處理日期和時間。您可以用許多不同的 方式對其進行例項化,具體取決於想要的結果。例如,您可以在沒有引數的情況下對其進行例項化:

或傳遞 milliseconds 作為一個引數:

您可以將一個日期字串作為一個引數傳遞:

或者您可以傳遞多個引數來建立一個完整的日期:

此外,有幾種方法可用於 Date 物件,一旦該物件 得到例項化,您便可以使用這些方法。大多數可用的方法圍繞 獲取當前時間的特定部分。以下方法是 可用於 Date 物件的 getter 方法:

●getDate

●getDay

●getFullYear

●getHours

●getMilliseconds

●getMinutes

●getMonth

●getSeconds

●getTime

●getTimezoneOffset

如您所見,每個方法所 返回的值都相當簡單。區別在於所返回的值範圍。例如, getDate 方法返回 一個月份的天數,範圍從 1 到 31;getDay 方法返回每週的天數,範圍從 0 到 6; getHours 方法返回小時數值, 範圍從 0 到 23;getMilliseconds 函式返回毫秒數值,範圍從 0 到 999。 getMinutes 和 getSeconds 方法返回一個範圍從 0 到 59 的值,getMonth 方法返回一個 從 0 到 11 之間的月份數值。本列表中惟一獨特的方法 是 getTime 和 getTimezoneOffset。 getTime 方法返回 自 1/1/1970 中午 12 點的毫秒數,而 getTimezoneOffset 方法返回 格林尼治標準時間和本地時間之間的時間差,以分鐘為單位。

對於大多數 getter 方法,還有一個 setter 方法,接受 相應的值範圍內的數值引數。setter 方法 如下所示:

●setDate

●setFullYear

●setHours

●setMilliseconds

●setMinutes

●setMonth

●setSeconds

●setTime

對於上述所有 getter 方法,有一些匹配的方法 返回相同的值範圍,只是這些值以 國際標準時間設定。這些方法包括:

●getUTCDate

●getUTCDay

●getUTCFullYear

●getUTCHours

●getUTCMilliseconds

●getUTCMinutes

●getUTCMonth

●getUTCSeconds

當然,由於對於所有原始 getter 方法都有 setter 方法, 對於國際標準時間也一樣。這些方法包括:

●setUTCDate

●setUTCFullYear

●setUTCHours

●setUTCMilliseconds

●setUTCMinutes

●setUTCMonth

●setUTCSeconds

正如在本文開頭提到的,我不提供許多 關於 toString 方法的資訊,但是 在 Date 物件中有一些方法可將日期轉換為一個字串,值得一提。在某些 情況下,需要將日期或日期的一部分轉換為一個 字串。例如,如果您將其追加到一個字串或在 比較語句中使用它。有幾個方法可用於 Date 物件,提供略微不同的 方法將其轉換成字串,包括:

●toDateString

●toLocaleDateString

●toLocaleTimeString

●toLocaleString

●toTimeString

●toUTCString

toDateString 方法將日期轉換為 字串:

toDateString 返回當前日期, 格式為 Tue Jul 19 2011。

toTimeString 方法將時間從 Date 物件轉換為字串:

toTimeString 將時間作為字串返回, 格式為 23:00:00 GMT-0700 (MST)。

最後一種將日期轉換為字串的方法是 toUTCString,它將日期轉換為 國際標準時間的字串。

有幾種方法使用區域設定將日期轉換成字串,但是在撰寫本文之時 Google Chrome 還不支援這幾種方法。不支援的方法 包括toLocaleDateString、 toLocaleTimeString 和 toLocaleString。

JavaScript Date 物件乍看起來似乎很簡單, 但是它不僅僅是一種顯示 當前日期的有用方式。它取決於您要建立的功能。 例如,Date 物件是 建立倒數計時鐘表或其他與時間相關的功能的基礎。

 

Array

JavaScript Array 物件是一個儲存變數的變數:您可以用它一次在一個變數中儲存多個值, 它有許多方法允許您操作或收集 有關它所儲存的值的資訊。儘管 Array 物件不差別對待值型別,但是 在一個單一陣列中使用同類值是很好的做法。因此, 在同一陣列中使用數字和字串不是好的做法。所有 可用於 Array 物件的屬性 都是隻讀的,這意味著它們的值不能從外部予以更改。

可用於 Array 物件的惟一屬性 是 length。該屬性返回 一個陣列中的元素數目,通常在使用 迴圈迭代陣列中的值時用到:

有多種方法可用於 Array 物件,您可以使用各種方法來向陣列新增元素,或從陣列刪除元素。 這些方法包括 pop、 push、shift 和 unshift。pop 和 shift 方法都從 陣列中刪除元素。pop 方法刪除並返回 一個陣列中的最後一個元素,而 shift 方法刪除並返回一個陣列中的第一個元素。相反的 功能可以通過 push 和 unshift 方法實現,它們將元素新增到 陣列中。push 方法將元素作為新元素新增到 陣列的結尾,並返回新長度,而 unshift 方法將元素新增到 陣列的前面,並返回新長度。

在 JavaScript 中對陣列進行排序可以通過兩個方法實現,其中之一 實際上稱為 sort。另一個方法是 reverse。sort 方法的複雜之處在於,它基於可選的 sort 函式排列陣列。 sort 函式可以是 您編寫的任何自定義函式。reverse 方法不像 sort 那樣複雜,儘管它的確通過顛倒元素更改 陣列中元素的順序。

在處理陣列時,索引非常重要,因為它們定義 陣列中每個元素的位置。有兩個方法可基於索引更改 字串:slice 和 splice。slice 方法接受索引或 索引開始和結尾的組合作為引數,然後提取陣列的一部分並基於引數將其作為 新陣列返回。splice 方法包括 index、 length 和 unlimited element 引數。該方法基於指定的索引將 元素新增到陣列,並基於指定的索引將元素從 陣列中刪除,或基於指定的索引將元素新增到陣列或從 陣列刪除元素。還有一種方法 可以基於匹配值返回一個索引: indexOf。然後您可以使用該索引擷取 或拼接陣列。

用任何程式語言編寫好程式碼的關鍵是編寫 有條理的程式碼。正如其各種方法所示, JavaScript Array 物件是一種 組織資料並建立複雜功能的強大方式。

 

Math

JavaScript Math 物件用於執行 數學函式。它不能加以例項化:您只能依據 Math 物件的原樣使用它,在沒有任何例項的情況下從該物件呼叫屬性和 方法:

Math 物件有許多屬性和方法 向 JavaScript 提供數學功能。所有的 Math 屬性都是隻讀常量, 包括以下各項:
●E

●LN2

●LN10

●LOG2E

●LOG10E

●PI

●SQRT1_2

●SQRT2

E 屬性返回 自然對數的底數的值,或尤拉指數。該值是惟一的 實數,以 Leonhard Euler 命名。呼叫 E 屬性會產生數字 2.718281828459045。其他兩個屬性也用於返回自然 對數:LN2 和 LN10。LN2 屬性返回值為 2 的自然對數,而 LN10 屬性返回值為 10 的自然 對數。LOG2E 和 LOG10E 屬性可用於返回 E 以 2 或 10 為底的對數。 LOG2E 的結果是 1.4426950408889633,而 LOG10E 的結果是 0.4342944819032518。通常您不需要 大部分這些屬性,除非您正在構建 計算器或其他數學密集型專案。然而, PI 和平方根比較常見。 PI 方法返回圓周與直徑的比率。兩個屬性返回平方根值: SQRT1_2 和 SQRT2。 第一個屬性返回 0.5 的平方根,而 SQRT2 返回 2 的平方根。

除了這些屬性,還有幾種方法可用來 返回一個數的不同值。其中每種方法都接受 數值,並根據方法名稱返回一個值。 遺憾的是,方法名稱不總是顯而易見的:

●abs。一個數的 絕對值

●acos。反餘弦

●asin。反正弦

●atan。反正切

●atan2。多個數的 反正切

●cos。餘弦

●exp。冪

●log。一個數的自然 對數

●pow。x 的 y 次方值

●sin。正弦

●sqrt。平方根

●tan。一個角的 正切

有三種方法可用於在 JavaScript 中取整數: ceil、floor 和 round。ceil 方法返回一個數的向上舍入值。該方法在 您需要將數字向上舍入到最接近的整數時非常有用。 floor 方法提供 與 ceil 相反的功能:它返回 一個數字的向下舍入值。該方法在需要 將數字向下舍入到最近的整數時非常有用。 round 方法提供了普通的四捨五入 功能,基於現有的 小數將數字向上或向下舍入。

Math 物件中包括的最後三個方法分別是 max、min 和 random。max 方法接受多個數字引數並返回最高值, 而 min 方法接受多個數字 引數並返回最低值。這些方法在 比較擁有數值的變數時非常有用,特別是當您事先不 知道是什麼數值時。您使用 random 方法返回 0 與 1 之間的一個隨機數。您可以將該方法用作多種目的,比如在 網站主頁上顯示一個隨機影像,或返回一個隨機數, 該隨機數可用作包含影像的檔案路徑的陣列的一個索引。 從該陣列選擇的隨機影像檔案路徑然後可 用於將該影像寫到 HTML 標記。

 

結束語

JavaScript 提供的屬性和方法僅僅是可以實現的 功能的開始:是您的想象力建立了 自定義功能。由於您的想象力沒有界限,因此 您編寫的程式碼也沒有界限。JavaScript 是一種靈活的語言,這有時使它 名聲較差,但是往好的一面看,它也向您提供了 快速、創造性地編寫程式碼的能力。如需進一步瞭解 JavaScript 物件,以及如何使用 JavaScript 語言建立您自己的自定義物件,請務必檢視 參考資料 部分。

相關文章