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 相关文章推荐
js控制淡入淡出示例代码
Nov 12 Javascript
jQuery遍历json中多个map的方法
Feb 12 Javascript
jQuery实现锚点scoll效果实例分析
Mar 10 Javascript
JQuery中节点遍历方法实例
May 18 Javascript
javascript实现类似百度分享功能的方法
Jul 27 Javascript
jQuery的 $.ajax防止重复提交的两种方法(推荐)
Oct 14 Javascript
JS实现的简易拖放效果示例
Dec 29 Javascript
原生Aajax 和jQuery Ajax 写法个人总结
Mar 24 jQuery
bootstrap suggest下拉框使用详解
Apr 10 Javascript
基于jQuery实现的单行公告活动轮播效果
Aug 23 jQuery
Angular7中创建组件/自定义指令/管道的方法实例详解
Apr 02 Javascript
Layui动态生成select下拉选择框不显示的解决方法
Sep 24 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
Zend Framework 2.0事件管理器(The EventManager)入门教程
2014/08/11 PHP
php中session_id()函数详细介绍,会话id生成过程及session id长度
2015/09/23 PHP
php中二分法查找算法实例分析
2016/09/22 PHP
php版微信自动获取收货地址api用法示例
2016/09/22 PHP
PHP实现的支付宝支付功能示例
2019/03/26 PHP
Linux下安装Memcached服务器和客户端与PHP使用示例
2019/04/15 PHP
改进:论坛UBB代码自动插入方式
2006/12/22 Javascript
两个DIV等高的JS的实现代码
2007/12/23 Javascript
jQuery(非HTML5)可编辑表格实现代码
2012/12/11 Javascript
Javascript图像处理—虚拟边缘介绍及使用方法
2012/12/27 Javascript
javascript 控制input只允许输入的各种指定内容
2014/06/19 Javascript
jQuery实现仿百度帖吧头部固定导航效果
2015/08/07 Javascript
整理AngularJS框架使用过程当中的一些性能优化要点
2016/03/05 Javascript
JS生成不重复的随机数组的简单实例
2016/07/10 Javascript
jquery实现跳到底部,回到顶部效果的简单实例(类似锚)
2016/07/10 Javascript
vue.js父组件使用外部对象的方法示例
2017/04/25 Javascript
jQuery实现按比例缩放图片的方法
2017/04/29 jQuery
jQuery模拟实现天猫购物车动画效果实例代码
2017/05/25 jQuery
vue单个组件实现无限层级多选菜单功能
2018/04/10 Javascript
vue2.0+ 从插件开发到npm发布的示例代码
2018/04/28 Javascript
JavaScript解析机制与闭包原理实例详解
2019/03/08 Javascript
基于vue-cli、elementUI的Vue超简单入门小例子(推荐)
2019/04/17 Javascript
Vue 实现输入框新增搜索历史记录功能
2019/10/15 Javascript
[02:47]2018年度DOTA2最佳辅助位选手4号位-完美盛典
2018/12/17 DOTA
Python实现数据库并行读取和写入实例
2017/06/09 Python
Python实现按中文排序的方法示例
2018/04/25 Python
对Python中列表和数组的赋值,浅拷贝和深拷贝的实例讲解
2018/06/28 Python
python 移除字符串尾部的数字方法
2018/07/17 Python
Python爬虫实现百度翻译功能过程详解
2020/05/29 Python
python 用Matplotlib作图中有多个Y轴
2020/11/28 Python
浅谈Selenium+Webdriver 常用的元素定位方式
2021/01/13 Python
html5实现完美兼容各大浏览器的播放器
2014/12/26 HTML / CSS
HTML5中input[type='date']自定义样式与日历校验功能的实现代码
2017/07/11 HTML / CSS
施工安全生产承诺书
2014/05/23 职场文书
征兵宣传标语
2014/06/20 职场文书
三严三实·严以修身心得体会
2016/01/15 职场文书