each
each(iterator) -> Hash
迭代处理 hash 中的“键/值”对。
实际上这是混入的 Enumerable 模块拥有的 each
方法。在这里列举出来是为了说明 iterator
的第一个参数的结构,以及遍历时是按照什么顺序对元素进行迭代的。
“键/值”对被传递作为 iterator
的第一个参数,它是一个具有两个属性的对象:
key
:“键”的名称,是一个String
。value
:与“键”相对应的值(有可能是undefined
)。
遍历时元素的顺序取决于浏览器,因为它依赖于原生的 for ... in
循环。虽然大多数现代的浏览器都会有固定的顺序,
但是也有例外的情况,因此,在你的脚本中不要期望元素的顺序总是一致的。
虽然迭代过程中会跳过 Hash
和 Enumerable
所固有的方法,但是 hash 中仍有可能具有函数值。
更准确的说法应该是:迭代时会跳过对象原型(原生的 prototype 属性)中的所有属性。
样例
var h = $H({ version: 1.5, author: 'Sam Stephenson' });
h.each(function(pair) {
alert(pair.key + ' = "' + pair.value + '"');
});
// 注意,提示框出现的顺序不一定跟下面一样
// --> 提示 'version = "1.5"' 和 'author = "Sam Stephenson"'