Esta chamada
[0].map(Array);
fornece o mesmo resultado como se você escrevesse algo assim:
[0].map(function (value, index, array) {
return Array(value, index, array);
})
A função Map está chamando a função Array com três parâmetros: valor do elemento, índice do elemento e array inteiro. Esta chamada para Arrayretorna o array com 3 elementos: valor (número 0), índice (número 0), array inteiro ( [0]).
E esse novo array é empacotado no Array original, porque você combinou o elemento original (número 0) com o novo elemento (array de 3 elementos)
Nota: Você pode estar acostumado a usar apenas o primeiro parâmetro como em
array.map(function (a) { return a * a; });
ou usando apenas dois para obter também o índice
array.map(function (item, index) { return "index=" + index + ", value=" + item; });
Mas você precisa se lembrar que mapainda fornece 3 parâmetros, você apenas os ignora em sua função de retorno de chamada. Esse também é o motivo pelo qual códigos como:
[0].map(String);
retorna
["0"]
É porque a função String se preocupa apenas com o primeiro parâmetro e ignora outros parâmetros passados. Se você ligar
String(11, "Some", "other", "ignored", "parameters")
você ainda vai conseguir
"11"