使用Array.prototype.forEach.apply遍历对象无输出问题求助
问题分析与解决
你的代码没有输出有两个核心问题:
apply参数传递错误apply方法的第二个参数必须是包含目标函数所需参数的数组。你直接把回调函数传给了apply,导致forEach没有接收到正确的回调参数,因此不会执行遍历逻辑。类数组对象缺少
length属性
你的obj是类数组结构,但没有length属性。Array.prototype.forEach依赖length属性来确定遍历的元素数量,没有这个属性时,它会认为没有可遍历的元素,直接跳过执行。
修正后的代码
var obj = { 0: 'Asad', 1: 'Ali', 2: 'Rizwan', length: 3 // 添加length属性,匹配元素数量 } console.log(obj); let FOREAC = Array.prototype.forEach; // 将回调函数放入数组,作为apply的第二个参数 FOREAC.apply(obj, [(item) => { console.log('ITEM LOGS'); console.log(item); }])
执行这段代码后,会依次输出每个元素:
ITEM LOGS Asad ITEM LOGS Ali ITEM LOGS Rizwan
内容的提问来源于stack exchange,提问作者asad nextstair
相关产品推荐
相关产品推荐

