刚刚忍不住手痒,下载了一个Firefox 2.0 Beta 1(可能过几天这个链接就换了)。写了一段JS,看来果然在JS1.7当中,Iterator是非常好用的。
代码如下
================================
<html>
<head>
<script language=javascript>
// add function for JavaScript Object
Object.prototype.newfunc = function(){};
function init() {
var a = [1,2,3,4];
var it;
var s;
// old method in JavaScript 1.5
s = “”;
for (it in a) {
s += it + ” ==> ” + a[it] + “<BR>”;
}
document.getElementById(”old_in”).innerHTML = s;
// new one in JavaScript 1.7
s = “”;
try {
it = Iterator(a, true);
while (true) {
var key = it.next();
s += key + ” ==> ” + a[key] + “<BR>”;
}
} catch (err if err == StopIteration) {
//alert(”End of record.\n”);
} catch (err) {
//alert(”Unknown error: ” + err.description + “\n”);
}
document.getElementById(”new_in”).innerHTML = s;
}
</script>
</head>
<body onload=”init()”>
<div id=old_in></div>
<hr>
<div id=new_in></div>
<hr>
</body>
</html>
================================
运行结果如下:
0 ==> 1
1 ==> 2
2 ==> 3
3 ==> 4
newfunc ==> function () { }
0 ==> 1
1 ==> 2
2 ==> 3
3 ==> 4
可见,使用Iterator是可以避免在for之中错误的使用一些未知的新添加的方法的。
有一点遗憾的就是,Iterator的结束是很丑陋的,不知道有没有什么好的方法。还需要继续研究。
0 Responses
Stay in touch with the conversation, subscribe to the RSS feed for comments on this post.