泛泛地使用javascript map函数是什么意思?

2022-03-30 00:00:00 arrays javascript prototype

我正在查看Mozilla开发人员页面上有关map函数的文档,有关于其中一个示例的问题。

这里是指向开发页面的链接。我现在看的是"一般使用地图"的例子。我还包含了以下代码:

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map

var map = Array.prototype.map;
var a = map.call('Hello World', function(x) { return x.charCodeAt(0); });
// a now equals [72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100]
首先,使用map"泛指"是什么意思。我猜这和

var map = Array.prototype.map;

JS中的Prototype对我来说仍然是新事物之一。用我自己的话说,我所理解的是,它可以用来改变函数的工作方式,并且它的工作方式可以将类的功能添加到JS中。

无论如何,这在map变量中存储了什么?为什么他们现在可以将字符串传递给map函数的args?在MAP上调用MAP函数而不是执行以下操作有什么意义:

var a = 'Hello World'.split('').map( function(x) { return x.charCodeAt(0); });

解决方案

首先,"一般地"使用map是什么意思。

"一般地使用map"意味着在开始时不是数组的对象上使用Array.prototype.map()。它适用于字符串‘Hello World’,因为‘Hello World’将返回一个长度,并且可以像数组一样迭代。

对我来说仍是新鲜事物之一是JS中的原型

我喜欢把原型看作是"这个类中刚刚内置的东西"。例如,假设您正在制作一款涉及赛车的视频游戏。所有车辆都有"开"和"停"的能力。您可以创建一个‘Vehicle’类,并将‘Drive’和‘Stop’方法保存到其原型中,而不是制作数百辆汽车并一遍又一遍地输入它们的‘Drive’和‘Stop’方法。现在,当您创建‘Fastcar’时,您将使其成为‘Vehicle’的实例,然后可以访问这些原型‘Drive’和‘Stop’方法,而不必每次都重新编写它们。

map变量中存储的内容是什么?

您在上面发布的map变量只是引用Array.prototype.map,因此不需要每次都键入它的较长形式。

为什么它们现在可以将字符串传递给map函数的args

字符串没有作为map函数的参数传递。相反,正在对字符串本身调用map。

在map上调用map函数有什么意义

var map在您的帖子中并不实际调用Array.prototype.map,它需要在末尾加上括号才能真正调用它,如下所示:Array.prototype.map()

而不是像

您提出的解决方案没有任何问题,但我认为文档向您展示了它的灵活性,以及同一问题总是有不同的解决方案。

相关文章