EcmaScript6学习之二
2016-05-18 15:39
387 查看
1、Iterator
浏览器支持情况:FF31+
js中提供来很多方法遍历集合中的元素,比如说for, forEach, for …of ,map。在ES6中,iterator是一个对象,提供next()方法依次访问下一个元素。也就是说要使用next()方法,就需要先创建一个iterator对象,先看个例子:
var lang = { name: ‘JavaScript’, birthYear: 1995 };
var it = Iterator(lang);
var pair = it.next(); // Pair equals [“name”, “JavaScript”]
pair = it.next(); // Pair equals [“birthYear”, 1995]
pair = it.next(); // if thers is not anyone, StopIteration exception is thrown
for…in 循环直接可以取代next()方法,
var lang = { name: ‘JavaScript’, birthYear: 1995 };
var it = Iterator(lang);、
for (var pair in it){
console.info(pair);
}
对于一个对象字面量,我们如果想只获得key值(不借助第三方工具类)该怎么实现?如果使用iterator就可以实现,需要额外加个参数,
var lang = {
name : ‘Eason’,
age : 27
}
var it = Iterator(lang, true);
for (var key in it){
console.info(key);
}
上面的例子都是基于对象字面量的迭代(注意,原型中的属性不会包含在序列中),那么基于数组的迭代是怎么处理的呢,先看个例子吧
var langs = [‘JavaScript’, ‘Python’, ‘C++’];
var it = Iterator(langs);
for (var pair in it){
console.info(pair);
}
但是返回的结果会让你眼前一亮
[0, “JavaScript”]
[1, “Python”]
[2, “C++”]
自己试下如果将
var it = Iterator(langs); 修改为var it = Iterator(langs,true);
看下效果如何。
浏览器支持情况:FF31+
js中提供来很多方法遍历集合中的元素,比如说for, forEach, for …of ,map。在ES6中,iterator是一个对象,提供next()方法依次访问下一个元素。也就是说要使用next()方法,就需要先创建一个iterator对象,先看个例子:
var lang = { name: ‘JavaScript’, birthYear: 1995 };
var it = Iterator(lang);
var pair = it.next(); // Pair equals [“name”, “JavaScript”]
pair = it.next(); // Pair equals [“birthYear”, 1995]
pair = it.next(); // if thers is not anyone, StopIteration exception is thrown
for…in 循环直接可以取代next()方法,
var lang = { name: ‘JavaScript’, birthYear: 1995 };
var it = Iterator(lang);、
for (var pair in it){
console.info(pair);
}
对于一个对象字面量,我们如果想只获得key值(不借助第三方工具类)该怎么实现?如果使用iterator就可以实现,需要额外加个参数,
var lang = {
name : ‘Eason’,
age : 27
}
var it = Iterator(lang, true);
for (var key in it){
console.info(key);
}
上面的例子都是基于对象字面量的迭代(注意,原型中的属性不会包含在序列中),那么基于数组的迭代是怎么处理的呢,先看个例子吧
var langs = [‘JavaScript’, ‘Python’, ‘C++’];
var it = Iterator(langs);
for (var pair in it){
console.info(pair);
}
但是返回的结果会让你眼前一亮
[0, “JavaScript”]
[1, “Python”]
[2, “C++”]
自己试下如果将
var it = Iterator(langs); 修改为var it = Iterator(langs,true);
看下效果如何。
相关文章推荐
- 解决sql2005远程连接报错,提示请验证实例名称是否正确并且 SQL Server 已配置为允许远程连接
- [TOP10]十大渗透测试演练系统
- java 多线程 CountDownLatch与join()方法区别
- JVM调优总结(3):垃圾回收面临的问题
- 使用广播 更新Fragment
- Java面试题(06)
- 线性代数导论5——SVD分解
- luac 编译器
- locate命令
- UITableView 调整分割线长度 等不常用属性总结
- bean继承
- windows搭建redis记录
- Hibernate get 和load的区别
- 常用的一些工具
- 针对Asp.net MVC SEO的几点建议
- Unity学习日常问题记录一
- Android自底部平滑向上滑出面板的AndroidSlidingUpPanel
- LeetCode 138. Copy List with Random Pointer
- Android多语言实现
- python2.7和 python3.4的却别