问题描述
我正在查看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"意味着在开始时不是数组的对象上使用Array.prototype.map()
。它适用于字符串‘Hello World’,因为‘Hello World’将返回一个长度,并且可以像数组一样迭代。
我喜欢把原型看作是"这个类中刚刚内置的东西"。例如,假设您正在制作一款涉及赛车的视频游戏。所有车辆都有"开"和"停"的能力。您可以创建一个‘Vehicle’类,并将‘Drive’和‘Stop’方法保存到其原型中,而不是制作数百辆汽车并一遍又一遍地输入它们的‘Drive’和‘Stop’方法。现在,当您创建‘Fastcar’时,您将使其成为‘Vehicle’的实例,然后可以访问这些原型‘Drive’和‘Stop’方法,而不必每次都重新编写它们。
您在上面发布的map
变量只是引用Array.prototype.map
,因此不需要每次都键入它的较长形式。字符串没有作为map函数的参数传递。相反,正在对字符串本身调用map。
var map
在您的帖子中并不实际调用Array.prototype.map
,它需要在末尾加上括号才能真正调用它,如下所示:Array.prototype.map()
。
您提出的解决方案没有任何问题,但我认为文档向您展示了它的灵活性,以及同一问题总是有不同的解决方案。
这篇关于泛泛地使用javascript map函数是什么意思?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!