<html>
<head>
<meta charset="UTF-8">
<title></title>
<script type="text/javascript">
// 自己实现一个 Array each方法 遍历多维数组
var arr=[1,2,3,[4,[5],[6]]];
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 .call(e,e);
}
this.i++ ;
}
this.i=null; //释放内存 垃圾回收机制回收变量
}
}catch(e){
//TODO handle the exception
}
return this;
}
arr.each(function(item){
alert(item);
})
</script>
</head>
<body>
</body>
</html>