forEach方法的缺点
- 只能依次迭代,不能中途结束
- 不支持返回值
- 不能迭代对象
封装一个each方法能达到的目的
const each=function each(obj,callback){
};
- 做了传递参数的类型检测
- 可以迭代数组和对象
- 可以中途结束循环(callback中返回false即可)
- 支持修改原数组或对象中的内容(返回一个新数组,原始数据不变)
- obj可以是数字(创建一个等长度的数组进行迭代)
- 支持类数组按照数组的方式进行处理
- 支持callback中的this迭代原始数据
封装万能each
const isObject = function isObject(obj){
return obj !== null && /^(object|function)$/.test(typeof obj);
}
const isFunction = function isFunction(obj){
return typeof obj === 'function';
}
const isArrayLike = function isArrayLike(obj){
let length = !!obj && 'length' in obj && obj.length;
if(isFunction(obj) || obj ===