recherche
Maisoninterface Webjs tutorielObjets de type tableau dans les compétences JavaScript_javascript

Je savais depuis longtemps que les arguments pouvaient être convertis en tableau : [].slice.call(arguments), car
arguments est un objet de type tableau, il peut donc être utilisé comme ceci. Mais je n'ai jamais été clair sur le nom des objets de type tableau

Quand j'ai lu Effective JavaScript aujourd'hui, il y avait une section dédiée à cela, et c'était vraiment cool.

Regardez d'abord un exemple de code que j'ai écrit :

Copier le code Le code est le suivant :

a = "bonjour"
[].map.call(a, (e) -> e.toUpperCase()) # => [].reduceRight.call(a, (acc, e) -> acc e) # => b = {1 : "a", 2 : "b", 4 : "c", longueur : 6}
[].reduce.call(b, (acc, e) -> acc e) # =>


Les premiers fonctionnent sur des chaînes. Eh bien, les chaînes peuvent également être considérées comme des objets de type tableau. Mais l'objet b à l'arrière est en fait
C'est aussi un objet de type tableau.

Lisez l'explication dans le livre :

Copier le code Le code est le suivant : Alors, qu'est-ce qui fait exactement qu'un objet « ressemble à un tableau » ? Le contrat de base de
un objet tableau se résume à deux règles simples.
Il a une propriété de longueur entière comprise entre 0...2^32 – 1.
La propriété length est supérieure au plus grand index de l'objet.
Un index est un entier compris entre 0...2^32 – 2 dont la représentation sous forme de chaîne
est la clé d'une propriété de l'objet.



Il n’y a que ces deux règles simples.
Alors pourquoi les arguments, les chaînes et l'objet b ci-dessus peuvent-ils être considérés comme des objets de type tableau ?

Ils ont tous un attribut de longueur légale (un entier positif compris entre 0 et 2**32 - 1).

Les valeurs de l'attribut length sont supérieures à leur indice maximum.

Autre exemple :



Copier le code Le code est le suivant : b = {1 : "a", 2 : "b", 4 : "c", longueur : 3}
[].reduce.call(b, (acc, e) -> acc e) # =>


Eh bien, c'est faux, c'est devenu « ab », car cela viole la règle 2 : l'attribut length est 3,
La valeur d'index maximale est 4, ce qui est supérieur à la propriété length. Le comportement est donc anormal.
C'est trop puissant. Il semble que cela définisse simplement une interface. Tant qu'il est conforme à cette interface, vous pouvez utiliser toutes les méthodes du tableau.


En fait, toutes les méthodes ne peuvent pas être utilisées, Array.prototype.concat

Il ne peut pas être utilisé car il connecte deux tableaux. Si vous n'êtes pas un amateur de tableaux, vous ne pourrez certainement pas l'utiliser.

Un autre petit problème est que la chaîne est immuable après sa création, elle restera donc immuable quelle que soit la façon dont vous la lancez.


Mais ce livre n'explique pas du tout pourquoi il peut être considéré comme un objet de type tableau s'il remplit ces deux conditions. De plus, l'auteur de ce livre

. Il est membre du comité ECMAScript, donc c'est fondamentalement crédible. Quant à savoir pourquoi il peut être considéré comme un objet de type tableau s'il remplit ces deux conditions, je ne sais pas, j'ai longtemps cherché sur Google et je n'ai trouvé aucune explication raisonnable.

Ce qui précède représente l’intégralité du contenu de cet article, j’espère que vous l’aimerez tous.

Déclaration
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
Remplacer les caractères de chaîne en javascriptRemplacer les caractères de chaîne en javascriptMar 11, 2025 am 12:07 AM

Explication détaillée de la méthode de remplacement de la chaîne JavaScript et de la FAQ Cet article explorera deux façons de remplacer les caractères de chaîne dans JavaScript: le code JavaScript interne et le HTML interne pour les pages Web. Remplacer la chaîne dans le code JavaScript Le moyen le plus direct consiste à utiliser la méthode Remplace (): str = str.replace ("trouver", "remplacer"); Cette méthode remplace uniquement la première correspondance. Pour remplacer toutes les correspondances, utilisez une expression régulière et ajoutez le drapeau global G: str = str.replace (/ fi

jQuery Vérifiez si la date est validejQuery Vérifiez si la date est valideMar 01, 2025 am 08:51 AM

Des fonctions JavaScript simples sont utilisées pour vérifier si une date est valide. fonction isValidDate (s) { var bits = s.split ('/'); var d = new Date (bits [2] '/' bits [1] '/' bits [0]); return !! (d && (d.getMonth () 1) == bits [1] && d.getDate () == Number (bits [0])); } //test var

jQuery obtient un rembourrage / marge d'élémentjQuery obtient un rembourrage / marge d'élémentMar 01, 2025 am 08:53 AM

Cet article explique comment utiliser jQuery pour obtenir et définir les valeurs de marge et de marge intérieures des éléments DOM, en particulier les emplacements spécifiques de la marge extérieure et des marges intérieures de l'élément. Bien qu'il soit possible de définir les marges intérieures et extérieures d'un élément à l'aide de CSS, l'obtention de valeurs précises peut être délicate. // installation $ ("div.header"). CSS ("marge", "10px"); $ ("div.header"). css ("padding", "10px"); Vous pourriez penser que ce code est

10 onglets jQuery Accordion10 onglets jQuery AccordionMar 01, 2025 am 01:34 AM

Cet article explore dix onglets jQuery exceptionnels et accordéons. La principale différence entre les onglets et les accordéons réside dans la façon dont leurs panneaux de contenu sont affichés et cachés. Plongeons ces dix exemples. Articles connexes: 10 plugins de l'onglet jQuery

10 vaut la peine de vérifier les plugins jQuery10 vaut la peine de vérifier les plugins jQueryMar 01, 2025 am 01:29 AM

Découvrez dix plugins jQuery exceptionnels pour élever le dynamisme et l'attrait visuel de votre site Web! Cette collection organisée offre diverses fonctionnalités, de l'animation d'image aux galeries interactives. Explorons ces outils puissants: Related Posts: 1

Http débogage avec le nœud et le http-consoleHttp débogage avec le nœud et le http-consoleMar 01, 2025 am 01:37 AM

HTTP-Console est un module de nœud qui vous donne une interface de ligne de commande pour exécuter les commandes HTTP. C'est idéal pour le débogage et voir exactement ce qui se passe avec vos demandes HTTP, qu'elles soient faites contre un serveur Web, Web Serv

Tutoriel de configuration de l'API de recherche Google personnaliséTutoriel de configuration de l'API de recherche Google personnaliséMar 04, 2025 am 01:06 AM

Ce tutoriel vous montre comment intégrer une API de recherche Google personnalisée dans votre blog ou site Web, offrant une expérience de recherche plus raffinée que les fonctions de recherche de thème WordPress standard. C'est étonnamment facile! Vous pourrez restreindre les recherches à Y

jQuery Ajouter une barre de défilement à divjQuery Ajouter une barre de défilement à divMar 01, 2025 am 01:30 AM

L'extrait de code jQuery suivant peut être utilisé pour ajouter des barres de défilement lorsque le contenu DIV dépasse la zone de l'élément de conteneur. (Pas de démonstration, veuillez le copier directement sur Firebug) // d = document // w = fenêtre // $ = jQuery var contentArea = $ (this), wintop = contentArea.scrollTop (), docheight = $ (d) .height (), winheight = $ (w) .height (), divheight = $ ('# c

See all articles

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
2 Il y a quelques semainesBy尊渡假赌尊渡假赌尊渡假赌
Repo: Comment relancer ses coéquipiers
4 Il y a quelques semainesBy尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
3 Il y a quelques semainesBy尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

SublimeText3 Linux nouvelle version

SublimeText3 Linux nouvelle version

Dernière version de SublimeText3 Linux

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel