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;
}
posted @ 2010-04-04 23:06  MKing's Kindom  阅读(160)  评论(0编辑  收藏  举报