JavaScript 1.6 新鮮事

JavaScript 1.6 推出了幾項新機能:E4X、幾個新的 Array 方法、以及 Array 與 String 的通用化。

Firefox 1.5 或更新版的瀏覽器支援 JavaScript 1.6。

E4X

ECMAScript for XML(E4X)是個在 JavaScript 內建立並處理 XML 內容的強力技術。我們將持續改進我們對 E4X 的支援,包括新增與既有的 DOM 進行透明化的整合,不過建立以 XML 為基礎的 Web 應用程式的開發者已可受益於 Firefox 1.5 對 E4X 的支援。

使用 E4X 時還是可以使用標準的 MIME 類型:

<script type="text/javascript">

不過,E4X 語法可能會和把 Script 放進 HTML 註解以避免舊瀏覽器讀取的現行方式(<!--...-->)發生衝突。E4X 也有可能與把 Script 放進 XML CDATA 區段(<![CDATA[...]]>)讓 Script 可以直接使用 "<" 和 ">" 符號(這並不適用於 HTML)的現行方式發生衝突。如果你不斷的見到莫名其妙的語法錯誤,那就把 "; e4x=1" 加到 MIME 類型裡:

<script type="text/javascript; e4x=1">

注意,擴充套件中的 Script 一定會把 HTML 註解當作 E4X 的語法來處理。也就是說,"e4x=1" 是預設的。

E4X 已在 使用 E4X 處理 XML 一文中說明。

Array 的擴充

在此有七個新的 Array 方法,並且可以分成兩大類,項目定位方法以及迭代方法。項目定位方法有:

  • indexOf() - 返回第一次出現指定項目的索引。
  • lastIndexOf() - 返回最後一次出現指定項目的索引。

迭代方法有:

  • every() - 對陣列中的每一個項目執行函數,如果函數返回 true 就繼續下去。如果每一個項目都返回 true,就返回 true。
  • filter() - 對陣列中的每一個項目執行函數,並以陣列返回函數執行結果為 true 的項目。
  • forEach() - 對陣列中的每一個項目執行函數。
  • map() - 對陣列中的每一個項目執行函數,並以陣列返回執行結果。
  • some() - 對陣列中的每一個項目執行函數,如果函數返回 false 就繼續下去。如果有一個項目返回 true,就返回 true。

閱讀 陣列的運用 以取得更多資訊,或見 Nicholas C. Zakas 的文章,Mozilla's New Array Methods

Array 與 String 的通用化

有時候你會想要把陣列的方法套用在字串上。這樣做的話,便是把字串視為字元的陣列。比如說,如果要檢查變數 str 裡面的每個字元都是字母,你就會這樣寫:

function isLetter(character) {
  return (character >= "a" && character <= "z");
}

if (Array.prototype.every.call(str, isLetter))
  alert("字串 '" + str + "' 只有包含字母!");

這樣的寫法相當耗事,所以 JavaScript 1.6 有比較簡短的寫法:

if (Array.every(str, isLetter))
  alert("字串 '" + str + "' 只有包含字母!");

同理,你可以把 String 方法用在任何物件上:

var num = 15;
alert(String.replace(num, /5/, '2'));

參閱

文件標籤與貢獻者

 此頁面的貢獻者: jackblackevo, fscholz, teoli, happysadman, Mgjbot, Kourge
 最近更新: jackblackevo,