javascript 學習之原型示例練習--- 實現一個each方法,遍歷多維數組

var arr = [1,2,3,[4,5,[6,7]]];
/*	arr.forEach(function(item,index,Array){
          alert(item);//依次彈出1,2,3,最後一次彈出4,5,6,7不能遍歷數組每一項
	})*/
	//自己實現一個each方法,遍歷多維數據
	Array.prototype.each = function(fn){
		try{
			// 遍歷數組的每一項,計數器,記錄數組的每一項
           this.i || (this.i = 0);
            //嚴謹判斷,什麼時候去走each核心方法  
        	//當數據的元素大於0 && 傳遞的參數必須爲函數 
           if(this.length > 0 && fn.constructor == Function){
           		//循環遍歷數據的每一項  
           		while(this.i < this.length){
           			var e = this[this.i];
           			if(e && e.constructor == Array){
           				// 執行回調函數
                        e.each(fn);
           			}else{
           				//如果不是數組,那就是一個單個元素  
              			//這的目的就是把數組的當前元素傳遞給fn函數,並讓函數執行  
              			// fn.apply(e,[e]);或者
              			fn.call(e,e);
           			}
           			this.i++;	
           		}
           }
           //釋放內存,垃圾回收機制回收變量  
           this.i = null;
		}
		catch(ex){
			// do something
		}
		return this;
	}
	arr.each(function(item){
		alert(item);
	})
</script>

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章