New in JavaScript 1.6

  • 版本网址缩略名: JavaScript/New_in_JavaScript/1.6
  • 版本标题: New in JavaScript 1.6
  • 版本 id: 162120
  • 创建于:
  • 创建者: Afcn007
  • 是否是当前版本?
  • 评论 /* E4X */

修订内容

JavaScript 1.6 引入了若干新特性:E4X,新的Array方法,及数组和字符串泛型。

JavaScript 1.6 受Firefox 1.5及其后版本支持。

E4X

ECMAScript for XML (E4X) 是用于创建和处理JavaScript正文中的XML内容的强大工具。我们将继续改进对E4X的支持,包括增加与现有DOM的透明整合,但创建基于XML之Web应用程序的开发人员已经可以从Firefox 1.5对E4X的支持中获益。

您在使用E4X的同时仍旧可以使用标准MIMI类型:

<script type="text/javascript">

不过,按照E4X语法书写的代码可能与现有的为兼容不支持JavaScript浏览器而加入的HTML注释(<!--...-->)冲突,甚至,与近年来更为流行的XML CDATA段落标记(<![CDATA{{mediawiki.external('...')}}]>)也可能冲突,不兼容 ,XML CDATA是为了容许"<" 与 ">"出现在脚本中,(这并不符合HTML规范)。若您读到无法解释或异常出现的语法错误,可以尝试向script标记的MIME type类型属性中添加"; e4x=1":

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

注意扩展的脚本总是将HTML注释视为E4X合法字符,也就是说,"e4x=1"属性是默认的。

数组扩展

七个新的Array方法可以分成两类:项(item)的定位方法和迭代方法。 项定位方法为:

  • indexOf() - 返回指定项首次出现的索引。
  • lastIndexOf() - 返回指定项最后一次出现的索引。

迭代方法包括:

  • every() - 在数组中的每个项上运行一个函数,若所有结果都返回真值,此方法亦返回真值。
  • filter() - 在数组中的每个项上运行一个函数,并将函数返回真值的项作为数组返回。
  • forEach() - 在数组中的每个项上运行一个函数。
  • map() - 在数组中的每个项上运行一个函数,并将全部结果作为数组返回。
  • some() - 在数组中的每个项上运行一个函数,若存在任意的结果返回真,则返回真值。

更多信息请参考Nicholas C. Zakas的文章,Mozilla's New Array Methods.

数组及字符串泛型

您有时也许会想在字符串类型上使用数组拥有的方法。这样做的话,您实际上将字符串视如一个字符数组。例如,想要检查变量str中是否每个字符都是字母,您可以这样写:

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

if (Array.prototype.every.call(str, isLetter))
  alert("The string '" + str + "' contains only letters!");

这种写法有点浪费,故JavaScript 1.6引入了泛型的简洁写法:

if (Array.every(str, isLetter))
  alert("The string '" + str + "' contains only letters!");

类似地,您可以简单地将对任何对象应用字符串方法:

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

参看

Firefox 2中引入的JavaScript 1.7新特性。


{{ wiki.languages( { "en": "en/New_in_JavaScript_1.6", "es": "es/Novedades_en_JavaScript_1.6", "fr": "fr/Nouveaut\u00e9s_dans_JavaScript_1.6", "ja": "ja/New_in_JavaScript_1.6", "pl": "pl/Nowo\u015bci_w_JavaScript_1.6", "ru": "ru/\u041d\u043e\u0432\u043e\u0435_\u0432_JavaScript_1.6" } ) }}

修订版来源

<p>
</p><p>JavaScript 1.6 引入了若干新特性:E4X,新的<code>Array</code>方法,及数组和字符串泛型。
</p><p>JavaScript 1.6 受<a href="cn/Firefox_1.5">Firefox 1.5</a>及其后版本支持。
</p>
<h3 name="E4X"> E4X </h3>
<p>ECMAScript for XML (<a href="cn/E4X">E4X</a>) 是用于创建和处理<a href="cn/JavaScript">JavaScript</a>正文中的<a href="cn/XML">XML</a>内容的强大工具。我们将继续改进对E4X的支持,包括增加与现有<a href="cn/DOM">DOM</a>的透明整合,但创建基于XML之Web应用程序的开发人员已经可以从Firefox 1.5对E4X的支持中获益。
</p><p>您在使用E4X的同时仍旧可以使用标准MIMI类型:
</p>
<pre>&lt;script type="text/javascript"&gt;
</pre>
<p>不过,按照E4X语法书写的代码可能与现有的为兼容不支持JavaScript浏览器而加入的HTML注释(<code><span class="plain">&lt;!--...--&gt;</span></code>)冲突,甚至,与近年来更为流行的XML CDATA段落标记(<code>&lt;![CDATA{{mediawiki.external('...')}}]&gt;</code>)也可能冲突,不兼容 ,XML CDATA是为了容许"&lt;" 与 "&gt;"出现在脚本中,(这并不符合HTML规范)。若您读到无法解释或异常出现的语法错误,可以尝试向script标记的MIME type类型属性中添加"; e4x=1":
</p>
<pre>&lt;script type="text/javascript; e4x=1"&gt;
</pre>
<p>注意扩展的脚本总是将HTML注释视为E4X合法字符,也就是说,"e4x=1"属性是默认的。
</p>
<h3 name=".E6.95.B0.E7.BB.84.E6.89.A9.E5.B1.95"> 数组扩展 </h3>
<p>七个新的<code><a href="cn/Core_JavaScript_1.5_Reference/Objects/Array">Array</a></code>方法可以分成两类:项(item)的定位方法和迭代方法。 项定位方法为:
</p>
<ul><li> <code><a href="cn/Core_JavaScript_1.5_Reference/Objects/Array/indexOf">indexOf()</a></code> - 返回指定项首次出现的索引。
</li><li> <code><a href="cn/Core_JavaScript_1.5_Reference/Objects/Array/lastIndexOf">lastIndexOf()</a></code> - 返回指定项最后一次出现的索引。
</li></ul>
<p>迭代方法包括:
</p>
<ul><li> <code><a href="cn/Core_JavaScript_1.5_Reference/Objects/Array/every">every()</a></code> - 在数组中的每个项上运行一个函数,若所有结果都返回真值,此方法亦返回真值。
</li><li> <code><a href="cn/Core_JavaScript_1.5_Reference/Objects/Array/filter">filter()</a></code> - 在数组中的每个项上运行一个函数,并将函数返回真值的项作为数组返回。
</li><li> <code><a href="cn/Core_JavaScript_1.5_Reference/Objects/Array/forEach">forEach()</a></code> - 在数组中的每个项上运行一个函数。
</li><li> <code><a href="cn/Core_JavaScript_1.5_Reference/Objects/Array/map">map()</a></code> - 在数组中的每个项上运行一个函数,并将全部结果作为数组返回。
</li><li> <code><a href="cn/Core_JavaScript_1.5_Reference/Objects/Array/some">some()</a></code> - 在数组中的每个项上运行一个函数,若存在任意的结果返回真,则返回真值。
</li></ul>
<p>更多信息请参考Nicholas C. Zakas的文章,<span class="exlink"><a href="cn/Mozilla's_New_Array_Methods_(external)">Mozilla's New Array Methods</a></span>.
</p>
<h3 name=".E6.95.B0.E7.BB.84.E5.8F.8A.E5.AD.97.E7.AC.A6.E4.B8.B2.E6.B3.9B.E5.9E.8B"> 数组及字符串泛型 </h3>
<p>您有时也许会想在字符串类型上使用数组拥有的方法。这样做的话,您实际上将字符串视如一个字符数组。例如,想要检查变量<var>str</var>中是否每个字符都是字母,您可以这样写:
</p>
<pre>function isLetter(character) {
  return (character &gt;= "a" &amp;&amp; character &lt;= "z");
}

if (Array.prototype.every.call(str, isLetter))
  alert("The string '" + str + "' contains only letters!");
</pre>
<p>这种写法有点浪费,故JavaScript 1.6引入了泛型的简洁写法:
</p>
<pre>if (Array.every(str, isLetter))
  alert("The string '" + str + "' contains only letters!");
</pre>
<p>类似地,您可以简单地将对任何对象应用字符串方法:
</p>
<pre>var num = 15;
alert(String.replace(num, /5/, '2'));
</pre>
<h3 name=".E5.8F.82.E7.9C.8B"> 参看 </h3>
<p><a href="cn/Firefox_2">Firefox 2</a>中引入的<a href="cn/New_in_JavaScript_1.7">JavaScript 1.7</a>新特性。
</p><p><br>
</p>
<div class="noinclude">
</div>
{{ wiki.languages( { "en": "en/New_in_JavaScript_1.6", "es": "es/Novedades_en_JavaScript_1.6", "fr": "fr/Nouveaut\u00e9s_dans_JavaScript_1.6", "ja": "ja/New_in_JavaScript_1.6", "pl": "pl/Nowo\u015bci_w_JavaScript_1.6", "ru": "ru/\u041d\u043e\u0432\u043e\u0435_\u0432_JavaScript_1.6" } ) }}
恢复到这个版本