gpt4 book ai didi

javascript - 为什么单独使用 map 会做同样的事情而使用 map.call 呢?

转载 作者:行者123 更新时间:2023-12-01 03:20:02 26 4
gpt4 key购买 nike

这就是问题:

Write a function which takes a ROT13 encoded string as input and returns a decoded string.

我已经解决了。我正在查看给定的解决方案 - 其中之一使用 .map.call ,如下所示:

function rot13(str) {
return str.split('')
.map.call(str, function(char) {
x = char.charCodeAt(0);
if (x < 65 || x > 90) {
return String.fromCharCode(x);
}
else if (x < 78) {
return String.fromCharCode(x + 13);
}
return String.fromCharCode(x - 13);
}).join('');
}

我不明白的是为什么在使用 .map(function(char) 时使用 .map.call(str, function(char) 会执行准确的操作同样的事情?我的意思是我尝试过,只是删除了 .call 位 on repl ,它给出了相同的结果。或者也许我不清楚 .call 是如何工作的。我已经阅读了MDN 文章介绍了它,只是仍然不确定它是如何工作的。或者为什么要使用它。

最佳答案

如果你想指定this应该指向哪个对象,你需要调用call。当相关对象不是数组(因此没有 obj.map )但可以被视为数组(如字符串或 HTMLCollection)时,通常会以这种方式使用数组函数。因此,可以调用 [].map.call(obj, callback),其中 obj 是应调用 map 的对象。

正如您所注意到的,这里的使用方式不必要地复杂。调用 [].map.call(str, ...str.split('').map(... 就足够了。

顺便说一下:return String.fromCharCode(x); 可以替换为 return char;

关于javascript - 为什么单独使用 map 会做同样的事情而使用 map.call 呢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45284714/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com