通过调用字符串使用array.prototype.map

时间:2016-07-08 05:21:43

标签: javascript call array.prototype.map

我知道调用的基本和array.prototype.map.call()函数有两个参数,第一个是要使用的对象上下文,因为它在被调用的函数内,第二个是参数列表。但是在MDN中,我找到了一个例子,其中通过调用方法使用了array.prototype.map,并将字符串作为第一个参数传递。

我想知道传递的字符串是如何在map函数中操作的。地图功能中没有此关键字。地图如何知道它是在字符串上调用的?

var map = Array.prototype.map;
var a = map.call('Hello World', function(x) { return x.charCodeAt(0); });

1 个答案:

答案 0 :(得分:5)

字符串在内部以下列格式表示:

String {0: "h", 1: "e", 2: "l", 3: "l", 4: "o", 5: " ", 6: "w", 7: "o", 8: "r", 9: "l", 10: "d", length: 11, [[PrimitiveValue]]: "hello world"}

因此当它传递给map时,实际上它被视为一个数组,因为它有索引作为键和length属性。 Array.prototype.map遍历它以返回数组,在使用Function.prototype.call方法传入的字符串上调用该数组。

在控制台中尝试new String('hello world')