Maison > Article > interface Web > Comment écrire du code JS de haute qualité (suite)_compétences javascript
Poursuivant l'article précédent "Comment écrire du code JS de haute qualité", cette fois je vais trier les points de connaissance des fonctions javascript.
2. Utiliser la fonction
Les fonctions fournissent aux programmeurs les principales fonctions abstraites et les mécanismes de mise en œuvre. Les fonctions peuvent implémenter indépendamment plusieurs fonctionnalités différentes dans d'autres langages, telles que des procédures, des méthodes, des constructeurs et même des classes ou des modules.
2.1 Comprendre les différences entre les appels de fonction, les appels de méthode et les appels de constructeur
Pour la programmation orientée objet, les fonctions, les méthodes et les constructeurs de classes sont trois concepts différents.
Mode d'utilisation :
1, appel de fonction
2, appel de méthode
Cette variable est liée à l'objet car la méthode hello est définie dans l'objet obj. Nous pouvons également attribuer la même référence de fonction à un autre objet et obtenir la même réponse.
3, le constructeur utilise
L'utilisation de l'opérateur new pour appeler User est considérée comme un constructeur.
Différent des appels de fonction et des appels de méthode, les appels de constructeur utilisent un tout nouvel objet comme valeur de cette variable et renvoient implicitement ce nouvel objet comme résultat de l'appel. La principale responsabilité du constructeur est d'initialiser ce nouvel objet.
2.2 Maîtrise des fonctions d'ordre élevé
Les fonctions d'ordre supérieur ne sont rien de plus que les fonctions qui prennent une fonction comme paramètre ou renvoient une valeur (souvent appelée fonction de rappel car la fonction d'ordre supérieur "l'appelle ensuite") l'est. une manière particulièrement puissante et expressive de Les expressions idiomatiques sont également largement utilisées dans les programmes js.
Considérez la méthode de tri standard pour les tableaux. Afin de fonctionner pour tous les tableaux, la méthode de tri nécessite que l'appelant décide comment comparer deux éléments du tableau.
L'exemple ci-dessus est encore simplifié à l'aide d'une fonction anonyme.
Apprendre à utiliser des fonctions d'ordre supérieur simplifie souvent le code et élimine le code passe-partout fastidieux. Nous pouvons utiliser une boucle pour implémenter une simple conversion d'un tableau de chaînes :
L'utilisation de la méthode pratique de mappage du tableau peut éliminer les boucles et utiliser uniquement une fonction locale pour convertir les éléments un par un.
De plus, par exemple, nous souhaitons créer plusieurs méthodes pour créer des chaînes différentes, avec une logique d'implémentation commune, et chaque boucle crée une chaîne en concaténant les résultats de calcul de chaque partie indépendante.
Cela permet aux lecteurs d'avoir une compréhension plus claire de ce que le code peut faire sans entrer dans les détails de mise en œuvre.
Remarques
javascript renvoie la formule pour un nombre aléatoire dans la plage spécifiée (entre m-n) : Math.random()*(n-m) m
En même temps, faites attention aux exigences de la question et s'il est nécessaire de renvoyer un entier positif
2.3 Mode d'appel
L'appel d'une fonction mettra en pause l'exécution de la fonction actuelle et transmettra le contrôle et les paramètres à la nouvelle fonction. En plus des paramètres formels définis lors de la déclaration, chaque fonction reçoit deux nouveaux paramètres supplémentaires : this et arguments.
C'est un paramètre très important, et sa valeur est déterminée par le mode d'appel.
Voici 4 modèles d'appel importants en JavaScript :
a. le modèle d'invocation de la méthode
b. le modèle d'invocation de fonction
c. le modèle d'invocation du constructeur
d. Appliquer le modèle d'invocation d'application
Ces modes diffèrent par la façon d'initialiser le paramètre clé ceci
1. La méthode d'invocation de méthode
Quand une fonction sert de méthode à un objet, on appelle la fonction une méthode. Lorsqu'une méthode est appelée, elle est liée à l'objet appelant.
Résumé :
1. Les méthodes qui peuvent obtenir le contexte des objets auxquels ils appartiennent grâce à cela sont appelées méthodes publiques
2. Lorsque vous utilisez . ou une expression d'indice pour utiliser une fonction, c'est le mode d'appel de la méthode, et cet objet est lié à l'objet précédent.
3. Une fonction peut utiliser ceci pour accéder à l'objet, afin de pouvoir récupérer la valeur de l'objet ou modifier la valeur de l'objet. La liaison à l'objet se produit au moment de l'appel.
2. le modèle d'invocation de fonction
Quand une fonction n'est pas une propriété d'un objet, alors elle est appelée en tant que fonction. Lorsqu'une fonction est appelée en mode d'appel de fonction, elle est liée à l'objet global. Il s'agissait d'une erreur de conception en JavaScript qui persiste.
3. le modèle d'invocation du constructeur
JavaScript est un langage basé sur l'héritage prototypique, ce qui signifie que les objets peuvent directement hériter des propriétés d'autres objets, et le langage est sans classe.
Si vous appelez une fonction avec new devant elle, vous obtiendrez un nouvel objet qui masque le membre prototype connecté à la fonction, et celui-ci sera également lié au nouvel objet.
Le nouveau préfixe modifie également le comportement de l'instruction return. Ce n’est pas non plus une méthode de programmation recommandée.
4. Appliquer le modèle d'invocation d'application
JavaScript étant un langage fonctionnel orienté objet, les fonctions peuvent avoir des méthodes.
La méthode Apply a deux paramètres, le premier est la valeur qui y sera liée, et le second est le tableau de paramètres. En d'autres termes, la méthode Apply nous permet de construire un tableau et de l'utiliser pour appeler la fonction. , ce qui nous permet de sélectionner cette valeur nous permet également de sélectionner la valeur du tableau.
Normalement, le récepteur d'une fonction ou d'une méthode (la valeur liée au mot-clé spécial this) est déterminé par la syntaxe de l'appelant. En particulier, la syntaxe de l'appel de méthode lie l'objet méthode à la variable this. Cependant, il est parfois nécessaire d'utiliser un récepteur personnalisé pour appeler une fonction. À ce stade, vous devez utiliser la méthode d'appel ou la méthode de liaison pour personnaliser le récepteur afin qu'il appelle la méthode
2.4 Utiliser la méthode bind pour extraire des méthodes avec des destinataires déterminés
Comme il n'y a pas de différence entre les méthodes et les propriétés dont la valeur est une fonction, il est également facile d'extraire la méthode de l'objet et d'extraire la fonction en tant que fonction de rappel et de la transmettre directement à la fonction d'ordre supérieur.
Mais il est aussi facile d'oublier de lier le récepteur de la fonction extraite à l'objet à partir duquel la fonction a été extraite.
À l'heure actuelle, le destinataire de butter.add n'est pas l'objet beurre. Le récepteur de la fonction dépend de la façon dont elle est appelée. La méthode forEach est appelée dans la portée globale, donc l'implémentation de la méthode forEach utilise l'objet global comme récepteur par défaut. Puisqu'il n'y a pas d'attribut d'entrées dans l'objet global, ceci. le code lance Une erreur s'est produite.
La méthode forEach permet à l'appelant de fournir un paramètre facultatif en tant que récepteur de la fonction de rappel.
Mais toutes les fonctions d'ordre élevé ne sont pas suffisamment réfléchies pour fournir aux utilisateurs des récepteurs de fonctions de rappel.
Il existe deux solutions :
1) Créez une fonction wrapper qui appelle explicitement add via une méthode objet tampon. Quelle que soit la manière dont la fonction encapsulée est appelée, il est toujours garanti d'insérer ses paramètres dans le tableau cible.
2) La méthode bind de l'objet fonction nécessite un objet récepteur et génère une fonction wrapper qui appelle la fonction d'origine en utilisant l'appel de méthode de l'objet récepteur.
Remarques
buffer.add.bind(buffer) crée une nouvelle fonction au lieu de modifier la fonction buffer.add :
buffer.add === buffer.add.bind(buffer); //false
Ce qui précède représente l’intégralité du contenu de cet article, j’espère que vous l’aimerez tous.