Heim  >  Artikel  >  Web-Frontend  >  Wie wandelt Array.prototype.slice.call(arguments) Argumente in ein Array um?

Wie wandelt Array.prototype.slice.call(arguments) Argumente in ein Array um?

Linda Hamilton
Linda HamiltonOriginal
2024-10-21 22:02:02946Durchsuche

How Does Array.prototype.slice.call(arguments) Transform Arguments into an Array?

Eintauchen in das Innenleben von Array.prototype.slice.call(arguments)

Verstehen des Verhaltens von Array.prototype.slice. call(arguments) erfordert eine eingehende Untersuchung, die über die oberflächliche Verwendung der Konvertierung von Argumenten in ein echtes Array hinausgeht.

Wenn Slice() normalerweise direkt für ein Array aufgerufen wird, iteriert es durch die Elemente dieses Arrays Array. Die Verwendung von .call() und .apply() bietet jedoch eine einzigartige Möglichkeit, den Wert davon innerhalb einer Funktion manuell zu definieren.

Im Fall von Array.prototype.slice.call(arguments) ein Array -ähnliches Objekt mit numerischen .length- und indizierten Eigenschaften wird durch dieses ersetzt. Diese Ersetzung täuscht Slice() vor und geht davon aus, dass es sich um ein echtes Array handelt, was seinen normalen Betrieb erleichtert.

Betrachten Sie das folgende Beispiel, in dem ein einfaches Objekt ohne inhärente Array-Eigenschaften mit .call() so festgelegt wird:

var my_object = {
    '0': 'zero',
    '1': 'one',
    '2': 'two',
    '3': 'three',
    '4': 'four',
    length: 5
};

var sliced = Array.prototype.slice.call( my_object, 3 );

Bemerkenswerterweise verhält sich Slice() wie erwartet und liefert das gewünschte Ergebnis:

['three','four'];

Der gleiche Mechanismus gilt, wenn ein Argumentobjekt als Wert dafür im Array übergeben wird. Prototyp.slice.call(Argumente). Da Argumente über eine .length-Eigenschaft und ein Array numerischer Indizes verfügen, verfährt Slice() so, als würde es mit einem realen Array operieren, und liefert so ein konsistentes und vorhersehbares Ergebnis.

Das obige ist der detaillierte Inhalt vonWie wandelt Array.prototype.slice.call(arguments) Argumente in ein Array um?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn