W3C Group的JavaScript1.8 新特性介绍


Posted in Javascript onMay 19, 2009

JavaScript 1.8 计划作为Gecko 1.9(将要合并在Firefox 3中)的一部分开始使用的。比起JavaScript 1.7来说,这只是很小的更新,不过它也确实包含了一些向ECMAScript 4/JavaScript 2进化的痕迹。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> 元素的时候,就是自动使用最新的JS版本(Mozilla 1.9中的 JS1.8)。
如果需要使用新的关键字 "yield" 和 "let" 的话,你就要指定是1.7版本或者更高的版本,因为已经写好的那些代码可能会把这两个关键字用作变量名或者函数名。如果并没有使用任何新的关键字,就可以不用指定JavaScript的版本。
表达式闭包
这个新添加的特性其实就是简单函数的方便写法,使得这个语言更加类似典型的Lambda notation.
JavaScript 1.7 以及更老的版本:
function(x) { return x * x; }
JavaScript 1.8:
function(x) x * x
这个语法允许你省略花括号和 'return' 语句 -- 隐式的做它们的工作。用这种方法写,就只是表面上看起来短了一些,并没有其他好处。
示例:
绑定事件处理器的简单写法:
document.addEventListener("click", function() false, true);
把这个定义与JavaScript 1.6中的一写数组函数一起使用:
elems.some(function(elem) elem.type == "text");
生成器表达式
这个新添加的特性,允许你简单的创建生成器(在JavaScript 1.7引入的)。通常你以前需要创建一个自定义的函数,它含有一个 yield,但是这个新特性使你可以使用类似数组概念的语法来创建一个独立的生成器句柄。
在 JavaScript 1.7 中,你可能需要写出想下面这样的代码来为一个对象创建自定义的生成器:
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 中,你可以规避要重建生成器函数的麻烦,而使用一个生成器表达式来代替:
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");
}
生成器表达式也可以像数值那样被传给一个函数。非常值得注意的是,生成器在绝对必要的有用的时候才被运行(并不像典型的数组概念的条件那样,预先搭好数组的结构)。这个区别可以从下面的例子中看到:
使用JavaScript 1.7 数组理念
handleResults([ i for ( i in obj ) if ( i > 3 ) ]);
function handleResults( results ) {
for ( let i in results )
// ...
}
使用 JavaScript 1.8 的生成器表达式
handleResults( i for ( i in obj ) if ( i > 3 ) );
function handleResults( results ) {
for ( let i in results )
// ...
}
这两个例子之间最大的区别就是,使用生成器表达式的时候,只需要循环那个 'obj' 结构一次,总共;而在第一个例子中,将会在递归的时候再循环一次。
JavaScript 1.8.1
JavaScript 1.8.1包含在Gecko1.9.1(将整合到Firefox3.5中)中。该版本只有很少的更新,主要集中在添加实时编译跟踪,参见:Tracemonkey just-in-time compiler。
当然其中较为显著的改变是移除了API中的callback分支,替换了callback操作,参见:detailed in this newsgroup posting。
添加的部分
Object.getPrototypeOf()
This new method returns the prototype of a specified object.
该方法将返回指定对象的原型。
New trim methods on the String object
The String object now has trim(), trimLeft(), and trimRight() methods.
String对象现在将具有trim(),trimLeft(),和trimRight()方法。

Javascript 相关文章推荐
jQuery 全选效果实现代码
Mar 23 Javascript
jquery mobile事件多次绑定示例代码
Sep 13 Javascript
jquery设置元素的readonly和disabled的写法
Sep 22 Javascript
node.js中的fs.truncateSync方法使用说明
Dec 15 Javascript
JQuery显示隐藏DIV的方法及代码实例
Apr 16 Javascript
浅谈JavaScript超时调用和间歇调用
Aug 30 Javascript
JavaScript中的return语句简单介绍
Dec 07 Javascript
jQuey将序列化对象在前台显示地实现代码(方法总结)
Dec 13 Javascript
浅谈Node框架接入ELK实践总结
Feb 22 Javascript
详解关于React-Router4.0跳转不置顶解决方案
May 10 Javascript
Node.js开发之套接字(socket)编程入门示例
Nov 05 Javascript
微信小程序去除左上角返回键的实现方法
Mar 06 Javascript
JS backgroundImage控制
May 19 #Javascript
jQuery 源代码显示控件 (Ajax加载方式).
May 18 #Javascript
编写兼容IE和FireFox的脚本
May 18 #Javascript
innerText和innerHTML 一些问题分析
May 18 #Javascript
JS 页面自动加载函数(兼容多浏览器)
May 18 #Javascript
Js 本页面传值实现代码
May 17 #Javascript
JavaScript 验证浏览器是否支持javascript的方法小结
May 17 #Javascript
You might like
php 删除记录实现代码
2009/03/12 PHP
PHP 图像尺寸调整代码
2010/05/26 PHP
解析获取优酷视频真实下载地址的PHP源代码
2013/06/26 PHP
Jquery颜色选择器ColorPicker实现代码
2012/11/14 Javascript
js正则表达式的使用详解
2013/07/09 Javascript
jQuery中andSelf()方法用法实例
2015/01/08 Javascript
js实现iPhone界面风格的单选框和复选框按钮实例
2015/08/18 Javascript
jquery弹出遮掩层效果【附实例代码】
2016/04/28 Javascript
jQuery.ajax 跨域请求webapi设置headers的解决方案
2016/08/08 Javascript
jQuery与vue实现拖动验证码功能
2018/01/30 jQuery
使用vue-cli创建项目的图文教程(新手入门篇)
2018/05/02 Javascript
JavaScript 点击触发复制功能实例详解
2018/11/02 Javascript
实例讲解JS中pop使用方法
2019/01/27 Javascript
CKeditor4 字体颜色功能配置方法教程
2019/06/26 Javascript
React服务端渲染原理解析与实践
2021/03/04 Javascript
Python 代码性能优化技巧分享
2012/08/07 Python
在Python的Django框架中编写错误提示页面
2015/07/22 Python
Python 实现某个功能每隔一段时间被执行一次的功能方法
2018/10/14 Python
对python中的try、except、finally 执行顺序详解
2019/02/18 Python
python接口自动化(十六)--参数关联接口后传(详解)
2019/04/16 Python
Python Excel处理库openpyxl使用详解
2019/05/09 Python
用Python实现将一张图片分成9宫格的示例
2019/07/05 Python
Keras之fit_generator与train_on_batch用法
2020/06/17 Python
Python 内存管理机制全面分析
2021/01/16 Python
海淘零差价,宝贝全球购: 宝贝格子
2016/08/24 全球购物
美国非常受欢迎的Spa品牌:Bliss必列斯
2018/04/10 全球购物
介绍一下代理模式(Proxy)
2014/10/17 面试题
电大自我鉴定范文
2013/10/01 职场文书
时尚休闲吧创业计划书
2014/01/25 职场文书
幼儿园毕业寄语
2014/04/03 职场文书
小学数学课题方案
2014/06/15 职场文书
2014各大专业毕业生自我评价
2014/09/17 职场文书
电视新闻稿
2015/07/17 职场文书
2015年教师党员个人总结
2015/11/24 职场文书
SQL实现LeetCode(197.上升温度)
2021/08/07 MySQL
不同品牌、不同型号对讲机如何互相通联
2022/02/18 无线电