Was ist Array.gelten eigentlich tun

Nach der Lektüre diese Frage ALSO, ich bin immer noch ein wenig verwirrt, was Array.gelten eigentlich macht. Betrachten Sie den folgenden Codeausschnitt:

new Array(5).map(function(){
  return new Array(5);
});

Ich erwarte, dass die init ein array mit 5 undefined-Einträge, dann die Karte über Sie erstellen ein zwei-dimensionales array von 5 x 5);

Stattdessen bekomme ich nur das array, als ob es nie abgebildet über:

[undefined, undefined, undefined, undefined, undefined]

Wenn ich wickeln Sie die Konstruktor-Aufruf, um array in einem Array.gelten nennen, dann Karte über, dass es funktioniert wie erwartet:

Array.apply(null, new Array(5)).map(function(){
  return new Array(5);
});

wodurch;

[[undefined, undefined, undefined, undefined, undefined],
 [undefined, undefined, undefined, undefined, undefined],
 [undefined, undefined, undefined, undefined, undefined],
 [undefined, undefined, undefined, undefined, undefined],
 [undefined, undefined, undefined, undefined, undefined]];

Was ist der deal? Ist Array.gelten nur eine andere Art des Aufrufs new Array () oder Array.der Prototyp.Konstruktor? Gibt es irgendwelche anderen Situationen, wo dies von Vorteil wäre? Auch, warum nicht meine erste Annäherung pick-up auf der Karte war ich die Zusendung durch?

Dank!
-Neil

  • Erwähnenswert für jeden, der will zu umgehen, das verwirrende Array.apply(null..., was, das Sie tun können Array(5).fill(Array(5)), um ein array von fünf sparse-5-Länge arrays; oder Array(someLength).fill(someDefault).map(someFunction) auf Karte someFunction über ein array von someLength. Zum Beispiel Array(1000).fill(1).map((n,i) => n+i) gibt Sie ein array von zahlen von 1 bis 1000
InformationsquelleAutor Neil | 2014-08-26
Schreibe einen Kommentar