使用 Array.prototype 的手动映射,我不明白东西在哪里传递 (JS)

Manual Map using Array.prototype, I don't understand where things are being passed around (JS)

提问人:Sheroze Mohammed 提问时间:10/21/2022 最后编辑:Sheroze Mohammed 更新时间:10/21/2022 访问量:49

问:

我只是对这段代码感到非常困惑。

“callback”如何以某种方式知道我们指的是我们想要操作的数组(第 4 行)? 参数“callback”甚至从未传递过任何内容,那么计算机如何知道从 callback 访问数组的元素呢?(第 9 行)。 我知道“this[i]”指的是元素,但是数组实际传递到此函数的位置?

还有第 17 - 19 行:

既然 s.myMap 已经是一个函数,为什么我们必须指定 'function(item)..' ?

它不应该只是 s.myMap() 吗,因为它是一个函数? 第 17 行的“项目”代表什么?

这真的很令人沮丧,对不起,如果我对这个问题不够清楚。

// The global variable
const s = [23, 65, 98, 5];

Array.prototype.myMap = function(callback) {
  const newArray = [];
  
  // Only change code below this line
  for(let i = 0; i < this.length; i++){ 
    newArray.push(callback(this[i]));
  }

  // Only change code above this line
  return newArray;
};


const new_s = s.myMap(function(item) {
  return item * 2;
});





console.log(new_s);

https://i.stack.imgur.com/78t5v.png

javascript 回调 这个 array.prototype.map

评论

1赞 Konrad 10/21/2022
请将代码添加为文本而不是图像
1赞 Konrad 10/21/2022
第 9 行:传递给组件,而不是从组件中检索。 引用数组,因为 。 at line 与 at line 完全相同this[i]thisprototypeitem17this[i]9
1赞 danh 10/21/2022
在这两点上都同意@KonradLinkowski的观点。在最后一个问题上,myMap 是一个将函数作为参数的函数。最后几行的函数是该参数
0赞 Sheroze Mohammed 10/21/2022
谢谢大家。那么“callback”参数到底是什么?

答: 暂无答案