Ich wusste schon vor langer Zeit, dass Argumente in ein Array umgewandelt werden können: [].slice.call(arguments), weil
arguments ist ein Array-ähnliches Objekt und kann daher wie folgt verwendet werden. Aber mir war nie klar, wie arrayartige Objekte
Als ich heute „Effective JavaScript“ gelesen habe, gab es einen eigenen Abschnitt, der diesem Thema gewidmet war, und es fühlte sich wirklich cool an.
Sehen Sie sich zunächst einen Beispielcode an, den ich geschrieben habe:
Lesen Sie die Erklärung im Buch:
Warum können Argumente, Zeichenfolgen und das obige B-Objekt als Array-ähnliche Objekte betrachtet werden?
Sie haben alle ein zulässiges Längenattribut (eine positive ganze Zahl zwischen 0 und 2**32 - 1).
Werte des Längenattributs sind größer als ihr maximaler Index.
Ein weiteres Beispiel:
Es scheint, dass es nur eine Schnittstelle definiert. Solange es dieser Schnittstelle entspricht, können Sie alle Methoden des Arrays verwenden.
Tatsächlich können nicht alle Methoden verwendet werden, Array.prototype.concat
Es kann nicht verwendet werden, da es zwei Arrays verbindet. Wenn Sie kein Array-Benutzer sind, können Sie es definitiv nicht verwenden.
Ein weiteres kleines Problem besteht darin, dass die Zeichenfolge nach ihrer Erstellung unveränderlich ist, sodass sie unveränderlich bleibt, egal wie Sie sie werfen.
Aber dieses Buch erklärt überhaupt nicht, warum es als Array-ähnliches Objekt betrachtet werden kann, wenn es diese beiden Bedingungen erfüllt. Darüber hinaus ist der Autor dieses Buches
Er ist Mitglied des ECMAScript-Komitees und daher grundsätzlich glaubwürdig. Warum es als Array-ähnliches Objekt betrachtet werden kann, wenn es diese beiden Bedingungen erfüllt, weiß ich nicht. Ich habe lange bei Google gesucht und keine vernünftige Erklärung gefunden.
Das Obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, er gefällt Ihnen allen.