Visit Mozilla.org

JavaScript 1.6 新鮮事

From MDC

JavaScript 1.6 推出了幾項新功能:E4X、幾個新的 Array 方法 (methods)、以及 Array 及 String 共通 (generics)。

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

目錄

[編輯] E4X

ECMAScript for XML (E4X) 是個在 JavaScript 內建立以及處理 XML 內容的強大科技。我們會繼續改進我們的 E4X 支援,包括新增與現有的 DOM 進行透明化的整合,不過建立以 XML 為基礎的網路應用程式 (web application) 的開發者已經可以善用 Firefox 1.5 的 E4X 支援。

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

<script type="text/javascript">

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

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

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

[編輯] Array 新功能

有七個新的 Array 方法 (method),並且可以分成兩大類,項目位置 (item location) 方法以及迴圈式 (iterative) 方法。項目位置方法有:

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

迴圈式方法有:

  • every() - 對陣列的每一個項目上執行一個函式,假如函式對於每一個項目都傳回 true,那便會傳回 true。
  • filter() - 對陣列的每一個項目上執行一個函式,並傳回包含所有函式有傳回 true 的項目陣列。
  • forEach() - 對陣列的每一個項目上執行函式。
  • map() - 對陣列的每一個項目上執行函式,並傳回一陣列的函式結果。
  • some() - 對陣列的每一個項目上執行函式,假如有任何一個函式有傳回 true,那便會傳回 true。

欲得知更多資訊,請見 Nicholas C. Zakas 的文章,Mozilla's New Array Methods

[編輯] Array 與 String 共通 (generics)

有時候你會想要把陣列方法用在字串上。如果你這麼做的話,便是把字串當作一陣列的字元。比如說,如果要檢查變數 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'));

[編輯] 另外參見

Firefox 2 起開始支援的 JavaScript 1.7