Maison > interface Web > js tutoriel > le corps du texte

Comment Array.prototype.slice.call transforme-t-il les arguments en tableaux ?

Mary-Kate Olsen
Libérer: 2024-10-21 22:02:30
original
313 Les gens l'ont consulté

How Does Array.prototype.slice.call Transform Arguments into Arrays?

Dévoilement du mécanisme d'Array.prototype.slice.call

Array.prototype.slice.call est un outil polyvalent qui nous accorde le capacité à transformer des arguments en véritables tableaux. Cependant, le mécanisme sous-jacent à cette transformation peut sembler énigmatique.

Dans des circonstances normales, lors de l'appel de .slice(), la fonction s'attend à ce que son entrée soit un tableau. Il procède par itération sur ce tableau, exécutant méticuleusement ses opérations.

Ce qui rend ce processus intrigant est le comportement étrange de .slice() lorsqu'il est appliqué aux arguments. En règle générale, les arguments ne constituent pas un tableau lui-même. Au contraire, il possède une structure semblable à un tableau, doté d'une propriété .length et d'un assortiment d'indices numériques. Cela confère à .slice() la flexibilité de supposer que arguments est un tableau, lui permettant d'effectuer ses opérations de manière transparente.

La clé de cette transformation réside dans les méthodes call() et apply(). Ces méthodes nous permettent d'attribuer manuellement la valeur this d'une fonction à un objet spécifique. En définissant la valeur this sur notre objet de type tableau, nous faisons essentiellement croire à .slice() qu'il fonctionne avec un tableau réel.

Pour illustrer ce concept, considérons l'objet simple suivant :

var my_object = {
    '0': 'zero',
    '1': 'one',
    '2': 'two',
    '3': 'three',
    '4': 'four',
    length: 5
};
Copier après la connexion

Bien que my_object ne soit pas un tableau, nous pouvons exploiter .slice() pour extraire ses valeurs en le définissant comme valeur this :

var sliced = Array.prototype.slice.call( my_object, 3 );
Copier après la connexion

Comme le montre la sortie de la console, le résultat array contient les éléments souhaités :

['three','four'];
Copier après la connexion

En substance, lorsque nous employons Array.prototype.slice.call avec l'objet arguments, la mécanique est identique. L'objet arguments, bien qu'il ne s'agisse pas d'un tableau, reflète suffisamment sa structure pour tromper .slice() et lui faire effectuer ses opérations comme s'il s'agissait d'un tableau.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!