EXTJS 有很多的迭代方法,例如,你也许已知道的Ext.each,但还有另外一些不为人知且很有用的方法。
首先,简要回顾下Ext.each:
Ext.each
为每一个数组的成员应用同一个方法,它基本上是一个更方便的循环形式
var people = ['Bill', 'Saul', 'Gaius']; //using each to detect Cylons: Ext.each(people, function (person, index) { var cylon = (index + 1) % 2 == 0; //every second man is a toaster alert(person + (cylon ? ' is ' : ' is not ') + 'a fraking cylon'); }); //is the same as for (var i = 0; i < people.length; i++) { var person = people[i]; var cylon = (index + 1) % 2 == 0; //every second man is a toaster alert(person + (cylon ? ' is ' : ' is not ') + 'a frakin cylon'); };
Ext.iterate
Ext.iterate 与 Ext.each 类似针对非数组对象. 通常用在for-in 循环中:var ships = { 'Bill': 'Galactica', 'Laura': 'Colonial One' }; Ext.iterate(ships, function (key, value) { alert(key + "'s ship is the " + value); }); //is the same as for (key in ships) { var value = ships[key]; alert(key + "'s ship is the " + value); }
用Ext.iterate在数组上,与Ext.each完全相同。
each和iterate方法都有第三个可选参数scope。
另一个有用的技巧是你可以更方便的重用相同的方法:
var myFunction = function (item, index) { //does some clever thing } Ext.each(people, myFunction); Ext.each(['another', 'array'], myFunction);