W3C Group的JavaScript1.8 新特性介紹
更新時(shí)間:2009年05月19日 19:02:23 作者:
在了解了JavaScript1.7的相關(guān)更新后,我們?cè)倮^續(xù)關(guān)注JavaScript1.8的新特性。在W3C Group帶來(lái)的JavaScript系列特性文章中,JavaScript1.8的更新相對(duì)較少!
JavaScript 1.8 計(jì)劃作為Gecko 1.9(將要合并在Firefox 3中)的一部分開(kāi)始使用的。比起JavaScript 1.7來(lái)說(shuō),這只是很小的更新,不過(guò)它也確實(shí)包含了一些向ECMAScript 4/JavaScript 2進(jìn)化的痕跡。JavaScript 1.8還將包含在JavaScript 1.6 和 JavaScript 1.7中的所有新特性。
使用 JavaScript 1.8
為了可以在HTML中使用 JavaScript 1.8 的新特性,需要如下這樣寫:
<script type="application/javascript;version=1.8"> ... 你的代碼 ... </script>
在使用 JavaScript shell 、JavaScript XPCOM 組件,或者 XUL <script> 元素的時(shí)候,就是自動(dòng)使用最新的JS版本(Mozilla 1.9中的 JS1.8)。
如果需要使用新的關(guān)鍵字 "yield" 和 "let" 的話,你就要指定是1.7版本或者更高的版本,因?yàn)橐呀?jīng)寫好的那些代碼可能會(huì)把這兩個(gè)關(guān)鍵字用作變量名或者函數(shù)名。如果并沒(méi)有使用任何新的關(guān)鍵字,就可以不用指定JavaScript的版本。
表達(dá)式閉包
這個(gè)新添加的特性其實(shí)就是簡(jiǎn)單函數(shù)的方便寫法,使得這個(gè)語(yǔ)言更加類似典型的Lambda notation.
JavaScript 1.7 以及更老的版本:
function(x) { return x * x; }
JavaScript 1.8:
function(x) x * x
這個(gè)語(yǔ)法允許你省略花括號(hào)和 'return' 語(yǔ)句 -- 隱式的做它們的工作。用這種方法寫,就只是表面上看起來(lái)短了一些,并沒(méi)有其他好處。
示例:
綁定事件處理器的簡(jiǎn)單寫法:
document.addEventListener("click", function() false, true);
把這個(gè)定義與JavaScript 1.6中的一寫數(shù)組函數(shù)一起使用:
elems.some(function(elem) elem.type == "text");
生成器表達(dá)式
這個(gè)新添加的特性,允許你簡(jiǎn)單的創(chuàng)建生成器(在JavaScript 1.7引入的)。通常你以前需要?jiǎng)?chuàng)建一個(gè)自定義的函數(shù),它含有一個(gè) yield,但是這個(gè)新特性使你可以使用類似數(shù)組概念的語(yǔ)法來(lái)創(chuàng)建一個(gè)獨(dú)立的生成器句柄。
在 JavaScript 1.7 中,你可能需要寫出想下面這樣的代碼來(lái)為一個(gè)對(duì)象創(chuàng)建自定義的生成器:
function add3(obj) {
for ( let i in obj )
yield i + 3;
}
let it = add3(someObj);
try {
while (true) {
document.write(it.next() + "<br>\n");
}
} catch (err if err instanceof StopIteration) {
document.write("End of record.<br>\n");
}
在 JavaScript 1.8 中,你可以規(guī)避要重建生成器函數(shù)的麻煩,而使用一個(gè)生成器表達(dá)式來(lái)代替:
let it = (i + 3 for (i in someObj));
try {
while (true) {
document.write(it.next() + "<br>\n");
}
} catch (err if err instanceof StopIteration) {
document.write("End of record.<br>\n");
}
生成器表達(dá)式也可以像數(shù)值那樣被傳給一個(gè)函數(shù)。非常值得注意的是,生成器在絕對(duì)必要的有用的時(shí)候才被運(yùn)行(并不像典型的數(shù)組概念的條件那樣,預(yù)先搭好數(shù)組的結(jié)構(gòu))。這個(gè)區(qū)別可以從下面的例子中看到:
使用JavaScript 1.7 數(shù)組理念
handleResults([ i for ( i in obj ) if ( i > 3 ) ]);
function handleResults( results ) {
for ( let i in results )
// ...
}
使用 JavaScript 1.8 的生成器表達(dá)式
handleResults( i for ( i in obj ) if ( i > 3 ) );
function handleResults( results ) {
for ( let i in results )
// ...
}
這兩個(gè)例子之間最大的區(qū)別就是,使用生成器表達(dá)式的時(shí)候,只需要循環(huán)那個(gè) 'obj' 結(jié)構(gòu)一次,總共;而在第一個(gè)例子中,將會(huì)在遞歸的時(shí)候再循環(huán)一次。
JavaScript 1.8.1
JavaScript 1.8.1包含在Gecko1.9.1(將整合到Firefox3.5中)中。該版本只有很少的更新,主要集中在添加實(shí)時(shí)編譯跟蹤,參見(jiàn):Tracemonkey just-in-time compiler。
當(dāng)然其中較為顯著的改變是移除了API中的callback分支,替換了callback操作,參見(jiàn):detailed in this newsgroup posting。
添加的部分
Object.getPrototypeOf()
This new method returns the prototype of a specified object.
該方法將返回指定對(duì)象的原型。
New trim methods on the String object
The String object now has trim(), trimLeft(), and trimRight() methods.
String對(duì)象現(xiàn)在將具有trim(),trimLeft(),和trimRight()方法。
使用 JavaScript 1.8
為了可以在HTML中使用 JavaScript 1.8 的新特性,需要如下這樣寫:
<script type="application/javascript;version=1.8"> ... 你的代碼 ... </script>
在使用 JavaScript shell 、JavaScript XPCOM 組件,或者 XUL <script> 元素的時(shí)候,就是自動(dòng)使用最新的JS版本(Mozilla 1.9中的 JS1.8)。
如果需要使用新的關(guān)鍵字 "yield" 和 "let" 的話,你就要指定是1.7版本或者更高的版本,因?yàn)橐呀?jīng)寫好的那些代碼可能會(huì)把這兩個(gè)關(guān)鍵字用作變量名或者函數(shù)名。如果并沒(méi)有使用任何新的關(guān)鍵字,就可以不用指定JavaScript的版本。
表達(dá)式閉包
這個(gè)新添加的特性其實(shí)就是簡(jiǎn)單函數(shù)的方便寫法,使得這個(gè)語(yǔ)言更加類似典型的Lambda notation.
JavaScript 1.7 以及更老的版本:
function(x) { return x * x; }
JavaScript 1.8:
function(x) x * x
這個(gè)語(yǔ)法允許你省略花括號(hào)和 'return' 語(yǔ)句 -- 隱式的做它們的工作。用這種方法寫,就只是表面上看起來(lái)短了一些,并沒(méi)有其他好處。
示例:
綁定事件處理器的簡(jiǎn)單寫法:
document.addEventListener("click", function() false, true);
把這個(gè)定義與JavaScript 1.6中的一寫數(shù)組函數(shù)一起使用:
elems.some(function(elem) elem.type == "text");
生成器表達(dá)式
這個(gè)新添加的特性,允許你簡(jiǎn)單的創(chuàng)建生成器(在JavaScript 1.7引入的)。通常你以前需要?jiǎng)?chuàng)建一個(gè)自定義的函數(shù),它含有一個(gè) yield,但是這個(gè)新特性使你可以使用類似數(shù)組概念的語(yǔ)法來(lái)創(chuàng)建一個(gè)獨(dú)立的生成器句柄。
在 JavaScript 1.7 中,你可能需要寫出想下面這樣的代碼來(lái)為一個(gè)對(duì)象創(chuàng)建自定義的生成器:
function add3(obj) {
for ( let i in obj )
yield i + 3;
}
let it = add3(someObj);
try {
while (true) {
document.write(it.next() + "<br>\n");
}
} catch (err if err instanceof StopIteration) {
document.write("End of record.<br>\n");
}
在 JavaScript 1.8 中,你可以規(guī)避要重建生成器函數(shù)的麻煩,而使用一個(gè)生成器表達(dá)式來(lái)代替:
let it = (i + 3 for (i in someObj));
try {
while (true) {
document.write(it.next() + "<br>\n");
}
} catch (err if err instanceof StopIteration) {
document.write("End of record.<br>\n");
}
生成器表達(dá)式也可以像數(shù)值那樣被傳給一個(gè)函數(shù)。非常值得注意的是,生成器在絕對(duì)必要的有用的時(shí)候才被運(yùn)行(并不像典型的數(shù)組概念的條件那樣,預(yù)先搭好數(shù)組的結(jié)構(gòu))。這個(gè)區(qū)別可以從下面的例子中看到:
使用JavaScript 1.7 數(shù)組理念
handleResults([ i for ( i in obj ) if ( i > 3 ) ]);
function handleResults( results ) {
for ( let i in results )
// ...
}
使用 JavaScript 1.8 的生成器表達(dá)式
handleResults( i for ( i in obj ) if ( i > 3 ) );
function handleResults( results ) {
for ( let i in results )
// ...
}
這兩個(gè)例子之間最大的區(qū)別就是,使用生成器表達(dá)式的時(shí)候,只需要循環(huán)那個(gè) 'obj' 結(jié)構(gòu)一次,總共;而在第一個(gè)例子中,將會(huì)在遞歸的時(shí)候再循環(huán)一次。
JavaScript 1.8.1
JavaScript 1.8.1包含在Gecko1.9.1(將整合到Firefox3.5中)中。該版本只有很少的更新,主要集中在添加實(shí)時(shí)編譯跟蹤,參見(jiàn):Tracemonkey just-in-time compiler。
當(dāng)然其中較為顯著的改變是移除了API中的callback分支,替換了callback操作,參見(jiàn):detailed in this newsgroup posting。
添加的部分
Object.getPrototypeOf()
This new method returns the prototype of a specified object.
該方法將返回指定對(duì)象的原型。
New trim methods on the String object
The String object now has trim(), trimLeft(), and trimRight() methods.
String對(duì)象現(xiàn)在將具有trim(),trimLeft(),和trimRight()方法。
您可能感興趣的文章:
- asp中在JScript中使用RecordSet對(duì)象的GetRows
- javascript setAttribute, getAttribute 在不同瀏覽器上的不同表現(xiàn)
- JavaScript1.6數(shù)組新特性介紹以及JQuery的幾個(gè)工具方法
- JS的get和set使用示例
- javascript中的__defineGetter__和__defineSetter__介紹
- JavaScript中的getTimezoneOffset()方法使用詳解
- AngularJS 2.0新特性有哪些
- 探討:JavaScript ECAMScript5 新特性之get/set訪問(wèn)器
相關(guān)文章
讓ie運(yùn)行js時(shí)提示允許阻止內(nèi)容運(yùn)行的解決方法
這個(gè)問(wèn)題一般是因?yàn)榫W(wǎng)頁(yè)中使用了一些js代碼,而ie的默認(rèn)安全級(jí)別過(guò)高導(dǎo)致運(yùn)行js時(shí)需要經(jīng)過(guò)準(zhǔn)許才可以。下面是IE的設(shè)置方法。2010-10-10表單的焦點(diǎn)順序tabindex和對(duì)應(yīng)enter鍵提交
表單的焦點(diǎn)tab鍵順序:tabindex決定,如果值缺省,擇按順序一一對(duì)應(yīng),想詳細(xì)了解此功能應(yīng)用的朋友可以參考下2013-01-01JavaScript基礎(chǔ)知識(shí)點(diǎn)歸納(推薦)
下面小編就為大家?guī)?lái)一篇JavaScript基礎(chǔ)知識(shí)點(diǎn)歸納(推薦)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-07-07JS實(shí)現(xiàn)的生成隨機(jī)數(shù)的4個(gè)函數(shù)分享
這篇文章主要介紹了JS實(shí)現(xiàn)的生成隨機(jī)數(shù)的4個(gè)函數(shù)分享,本文直接給出實(shí)現(xiàn)代碼,需要的朋友可以參考下2015-02-02定義JavaScript二維數(shù)組采用定義數(shù)組的數(shù)組來(lái)實(shí)現(xiàn)
javaScript沒(méi)有提供直接定義二維數(shù)組的方法,但可以使用定義數(shù)組的數(shù)組來(lái)定義JavaScript二維數(shù)組,需要的朋友可以了解下2012-12-12JavaScript CSS修改學(xué)習(xí)第二章 樣式
有時(shí)候你想看看文檔的默認(rèn)樣式。比如,你的某個(gè)段落的寬度是50%,你想知道在用戶的瀏覽器中他的確切的像素是多少。2010-02-02