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。
頁面分類: E4X | JavaScript