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 相关文章推荐
几个高效,简洁的字符处理函数
Apr 12 Javascript
只需20行代码就可以写出CSS覆盖率测试脚本
Apr 24 Javascript
jquery中.add()的使用分析
Apr 26 Javascript
js控制表单操作的常用代码小结
Aug 15 Javascript
replace()方法查找字符使用示例
Oct 28 Javascript
JavaScript setTimeout使用闭包功能实现定时打印数值
Dec 18 Javascript
JavaScript进阶练习及简单实例分析
Jun 03 Javascript
html+js实现简单的计算器代码(加减乘除)
Jul 12 Javascript
AngularJS中filter的使用实例详解
Aug 25 Javascript
微信端调取相册和摄像头功能,实现图片上传,并上传到服务器
May 16 Javascript
Element el-button 按钮组件的使用详解
Feb 01 Javascript
vue route新窗口跳转页面并且携带与接收参数
Apr 10 Vue.js
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
德生BCL3000的电路分析和打磨
2021/03/02 无线电
php 图像函数大举例(非原创)
2009/06/20 PHP
PHP5 字符串处理函数大全
2010/03/23 PHP
PHP+MYSQL会员系统的登陆即权限判断实现代码
2011/09/23 PHP
基于php中使用excel的简单介绍
2013/08/02 PHP
php实现的mongodb操作类实例
2015/04/03 PHP
PHP构造函数与析构函数用法示例
2016/09/28 PHP
Thinkphp5.0 框架Model模型简单用法分析
2019/10/11 PHP
Web前端设计模式  制作漂亮的弹出层
2010/10/29 Javascript
分页栏的web标准实现
2011/11/01 Javascript
再谈javascript面向对象编程
2012/03/18 Javascript
jQuery中的read和JavaScript中的onload函数的区别
2014/08/27 Javascript
JS实现同一个网页布局滑动门和TAB选项卡实例
2015/09/23 Javascript
JavaScript中cookie工具函数封装的示例代码
2016/10/11 Javascript
JS前端加密算法示例
2016/12/22 Javascript
javascript遍历json对象的key和任意js对象属性实例
2017/03/09 Javascript
Vue表单类的父子组件数据传递示例
2018/05/03 Javascript
实例详解BootStrap的动态模态框及静态模态框
2018/08/13 Javascript
React 无状态组件(Stateless Component) 与高阶组件
2018/08/14 Javascript
微信小程序首页的分类功能和搜索功能的实现思路及代码详解
2018/09/11 Javascript
微信小程序如何调用图片接口API并居中显示
2019/06/29 Javascript
ES6扩展运算符和rest运算符用法实例分析
2020/05/23 Javascript
python清除字符串里非数字字符的方法
2015/07/02 Python
python3连接MySQL数据库实例详解
2018/05/24 Python
python交互模式下输入换行/输入多行命令的方法
2019/07/02 Python
详解Python多线程下的list
2020/07/03 Python
店长岗位的工作内容
2013/11/12 职场文书
开业庆典主持词
2014/03/21 职场文书
家庭贫困证明书(3篇)
2014/09/15 职场文书
地球一小时活动总结
2015/02/27 职场文书
2015年体育教学工作总结
2015/05/20 职场文书
付款证明格式范文
2015/06/19 职场文书
2019年入党思想汇报格式与要求
2019/06/25 职场文书
导游词之上海东方明珠塔
2019/09/25 职场文书
python图片灰度化处理的几种方法
2021/06/23 Python
用Python实现屏幕截图详解
2022/01/22 Python