迭代器each
是否有参数args
- 是
- 数组处理
- 对象处理
- 否
- 数组处理
- 对象处理
function each(obj, callback, args) {
var value,
i = 0,
length = obj.length,
isArray = obj instanceof Array;
if (args) {
if (isArray) {
for (; i < length; i++) {
value = callback.call(obj[ i ],i,obj[ i ], args); //jquery源码为value = callback.apply(obj[ i ], args),但我觉得有args的时候也不能忘记传递索引值吧!
if (value === false) {
break;
}
}
} else {
for (i in obj) {
value = callback.call(obj[ i ],i,obj[ i ], args);
//jquery源码为value = callback.apply(obj[ i ], args);
if (value === false) {
break;
}
}
}
} else {
if (isArray) {
for (; i < length; i++) {
value = callback.call(obj[i], i, obj[i]);
if (value === false) {
break;
}
}
} else {
for (i in obj) {
value = callback.call(obj[i], i, obj[i]);
if (value === false) {
break;
}
}
}
}
return obj;
}