<script type="text/javascript">
var data = [1, 2, [3, 4]];
Array.prototype.each = function(fn) {
try {
//this为调用这个函数的对象,也就是data
//遍历数组的每一项,计数器记录当前遍历的元素位置
this.i || (this.i = 0); //var i =0;
//严谨的判断,当数组长度大于0并且传入的是函数才会进入核心代码
if (fn.length && 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); //当然也可以调用fn(e); 但是更推荐这么做,第一个参数可以是空null,尽量不占用额外的内存资源
}
this.i++;
}
this.i = null;
}
} catch (ex) {
//
}
return this;
};
data.each(function(item) {
alert(item);
});
</script>
javascript原型-自己实现each方法遍历多维数组(2)
最新推荐文章于 2022-05-24 20:28:36 发布