JavaScript 1.6 の新機能

 

JavaScript 1.6 では次のような新機能が導入されています。E4X、Array の新しいメソッド、そして Array および String の汎用化です。

JavaScript 1.6 は Firefox 1.5 以降でサポートされています。

E4X

ECMAScript for XML (E4X) は JavaScript 内で XML コンテンツを作成したり処理したりする強力な技術です。私たちは、既存の DOM との透過的な統合など、E4X サポートの向上を続けていくつもりですが、XML ベースのウェブアプリケーションの開発者は Firefox 1.5 での E4X サポートの恩恵を受けることができます。

E4X を利用する際も、あなたは標準的な MIME タイプを使用することができます:

<script type="text/javascript">

しかし E4X の文法は、スクリプトを HTML コメント (<!--...-->) 内に埋め込むという、古いブラウザからスクリプトを見えなくするための一般的な方法と衝突する可能性があります。E4X はまた、スクリプトを XML の CDATA セクション (<![CDATA[...]]>) 内に埋め込むという、"<" や ">" という記号を使えるようにするよりモダンな方法 (これは HTML には適用できないので注意) とも衝突する可能性があります。よくわからない文法エラーが生じた場合は MIME タイプに "; e4x=1" を追加してください:

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

拡張機能のスクリプトは常に HTML コメントを E4X リテラルとして扱うことに注意してください。つまり、"e4x=1" が暗黙的に指定されている状態です。

E4X については、Processing XML with E4X で説明されています。

Array の拡張

Array のメソッドが新しく 7 つ追加されました。これらは項目の場所に関するメソッドと反復的なメソッドの 2 つに分類可能です。項目の場所に関するメソッドは:

  • indexOf() - 与えられた項目が最初に出現するインデックスを返す。
  • lastIndexOf() - 与えられた項目が最後に出現するインデックスを返す。

反復的なメソッドは:

  • every() - 配列の各項目において関数を実行し、訪れることのできたすべての項目について関数が true を返した場合に true を返す。
  • filter() - 配列の各項目において関数を実行し、関数が true を返した項目全体からなる配列を返す。
  • forEach() - 配列の各項目において関数を実行する。
  • map() - 配列の各項目において関数を実行し、その結果の配列を返す。
  • some() - 配列の各項目において関数を実行し、訪れることのできたどれかの項目について関数が true を返した場合に true を返す。

詳しい情報については、Working with Arrays、もしくは、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 では汎用的 (generic)な簡易表記が導入されました:

if (Array.every(str, isLetter))
  alert("文字列 '" + str + "' は英字のみ含んでいます!");

同様に String のメソッドをどんなオブジェクトにも簡単に適用できます:

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

Working with Array-like objects も参照してください。

 

Document Tags and Contributors

Contributors to this page: Yuichirou, Potappo, Mgjbot, ethertank, Electrolysis
最終更新者: ethertank,