需要关于 Array.prototype.map 和 map.call( ) 的解释,这是如何工作的?

Need Explanation about Array.prototype.map and map.call( ), how this is working?

let Map = Array.prototype.map
let strResult = Map.call("Muhammad asif", (x) => {
    return x.charCodeAt(0);
})
console.log(strResult)

call和map是什么关系,过程是怎样的?为什么这里使用 charCodeAt(0)?

  1. What is the relation between call and map?
  • 正如@jabaa在评论区所说,map是一个函数。 call 也是一个函数。
  • mapArray 对象的一部分,callFunction 对象的一部分。
  • 意思是,
    • 你应该在数组上使用 map。例如:[1, 2, 3].map()
    • 并在函数上使用 call。例如:myFunction.call()

  1. How is its process?

Array.prototype.map 是一个函数,你把它放在一个名为 Map 的变量上。你不能像普通函数一样使用它,因为它是与数组一起使用的设计者。你可以这样使用它:

const myArray = [1, 2, 3]
myArray.Map = Map // put your `Map` variable into a real array
myArray.Map(number => console.log(number))

Map.call("your array or iterable things goes here", (itemInArray) => {console.log(itemInArray)});
/* first parameter of `call` will be used as `this`. `this` in `Array.prototype.map` means an array. CMIIW */

与以下相同:

const myString = "your array or iterable things goes here"
for(let index = 0; index < myString.length; index++){
  const itemInArray = myString[index]
  console.log(itemInArray)
}

  1. Why charCodeAt(0) used here?

我不知道。那是你的代码,应该回答这个问题的是你自己。 charCodeAt 不是 mapcall 工作所必需的函数。仅供参考,charCodeAt 也是 returns an integer between 0 and 65535 representing the UTF-16 code unit at the given index 的函数。所以,

"abc".charCodeAt(0) // will show UTF-16 representation of the 0th character of "abc"
"abc".charCodeAt(1) // will show UTF-16 representation of the 1st character of "abc"
"abc".charCodeAt(2) // will show UTF-16 representation of the 2nd character of "abc"

在这里你可以找到一些解释https://forum.freecodecamp.org/t/explain-array-prototype-map-call/165936/7

通过这种方法,您可以在字符串上使用 map 函数,因为它是一个数组。

charCodeAt 是对给定字符串的每个元素调用的函数。它 returns 传递字符的 Unicode 表示(数字)。您可以传递任何其他字符串接受函数而不是它。

例如:

let Map = Array.prototype.map
let strResult = Map.call("Muhammad asif", (x) => {
    return x + x
});
console.log(strResult)

结果为 ["MM", "uu", "hh", "aa", "mm", "mm", "aa", "dd", " ", "aa", "ss", "ii", "ff "]