javascript语言扩展:可迭代对象(2)

简介:

在文章迭代器(1)中我们简单介绍了如何创建一个可迭代对象;出于某种考虑你可能想从可迭代对象中显式获取一个迭代器对象,这时你可以调用Iterator()函数(该函数是定义在JavaScript 1.7中的全局函数),如果该函数的参数味一个可迭代对象,那么它将放回这个对象的__iteratior__()的返回值;Iterator()还可以传入第二个参数,该参数会参与__iterator__方法的调用。

Iterator()函数还有一个重要目的,如果传入的对象或数组没有定义__iterator__()方法,则会返回该对象的一个可迭代的自定义迭代器;该自定义迭代器的next()方法会返回一个包括2个值数组:第一个元素是属性名,第二个元素是属性值。

var obj = {x:1,y:11,z:111,last:"end"}
for(x in Iterator(obj))
  console.log(x)

以上代码运行结果为:

["x", 1]
["y", 11]
["z", 111]
["last", "end"]

Iterator()函数返回的迭代器还有2个重要特效:
1:只对自有属性进行遍历而忽略继承的属性;
2:入给其传入第二个参数true,则返回的迭代器只对属性名遍历,而忽略属性值:

var obj = {x:1,y:2}
Object.prototype.z = 3;
for(p in obj)
      console.log(p);  //输出x,y,z
for(p in Iterator(obj))
      console.log(p); //输出["x",1],["y",2]
for(p in Iterator(obj,true))
      console.log(p); //输出x和y
相关文章
|
3天前
|
存储 JavaScript 前端开发
JavaScript 对象的概念
JavaScript 对象的概念
17 4
|
1天前
|
缓存 JavaScript 前端开发
JavaScript中数组、对象等循环遍历的常用方法介绍(二)
JavaScript中数组、对象等循环遍历的常用方法介绍(二)
7 1
|
2天前
|
存储 JavaScript 前端开发
js中函数、方法、对象的区别
js中函数、方法、对象的区别
7 2
|
5天前
|
JavaScript 前端开发 Unix
Node.js 全局对象
10月更文挑战第5天
11 2
|
1天前
|
JavaScript 前端开发 索引
JavaScript中数组、对象等循环遍历的常用方法介绍(一)
JavaScript中数组、对象等循环遍历的常用方法介绍(一)
5 0
|
3月前
|
存储 JavaScript 前端开发
|
JavaScript
js基础笔记学习247event对象3
js基础笔记学习247event对象3
63 0
js基础笔记学习247event对象3
|
JavaScript
js基础笔记学习309筛选jquery对象1
js基础笔记学习309筛选jquery对象1
51 0
js基础笔记学习309筛选jquery对象1
|
JavaScript
js基础笔记学习245event对象1
js基础笔记学习245event对象1
38 0
js基础笔记学习245event对象1
|
JavaScript
js基础笔记学习246event对象2
js基础笔记学习246event对象2
54 0
js基础笔记学习246event对象2