void muse.each(object, function)
我对each的方式,做了简单的定义:
string:each每个字符。汉字的话,前提是utf8编码,each每个字而不是半字。
object:如果length为number(意为数组或具有length属性可通过数字下标访问的集合),则each每个元素,否则,则each对象内部属性,each每个属性名。
number:从零开始,each到该数字-1。
需要注意的是:
1、为了更灵活,在对object进行属性轮巡时,我传给代理的是属性名而不是属性值
2、我将索引值作为第二个参数传了过去
3、在轮巡时监视代理方法的返回值,可以以此来中断轮巡。
each : function(obj, fun){ if(!obj || !fun) return; var c, i; switch(typeof obj){ case 'string': for(c = 0; c < obj.length; c++) if(fun(obj.charAt(c), c)) return; break; case 'object': if(typeof obj.length == 'number') { for(c = 0; c < obj.length; c++) if(fun(obj[c], c)) return; } else { i = 0; for(c in obj) if(fun(c, i++)) return; } break; case 'number': for(c = 0; c < obj; c++) if(fun(c)) return; break; } c = null; i = null; }