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>
javascript 學習之原型示例練習--- 實現一個each方法,遍歷多維數組
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.