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

Utilisation de la méthode replace() dans les compétences javascript_javascript

WBOY
Libérer: 2016-05-16 16:02:41
original
1266 Les gens l'ont consulté

J'ai récemment parcouru quelques questions d'entretien d'Alibaba, et l'une d'elles implique l'utilisation de la méthode replace() en JavaScript. Voici la question d'origine :

.

« Dites-moi à quoi servent les fonctions suivantes ? Que faut-il remplir dans l'espace vide ? »

 // define 
 (function (window) { 
   function fn(str) { 
     this.str = str; 
   } 
   fn.prototype.format = function () { 
     var arg = ______; 
     return this.str.replace(_______, function (a, b) { 
       return arg[b] || ''; 
     }); 
   } 
   window.fn = fn; 
 })(window); 
 // use 
 (function(){ 
   var t = new fn('<p><a href="{0}">{1}</a><span>{2}</span></p>');
   console.log( t.format('http://www.alibaba.com', 'Alibaba', 'Welcome') ); 
 })();

Copier après la connexion

Ce qui suit est le processus d'analyse (il semble qu'il vaut mieux le numéroter, personnellement je pense qu'il est plus organisé)

1. Parce que cette question implique également d'autres points de connaissances, comme les fonctions anonymes, les prototypes, etc., mais ce n'est pas l'objet de cette discussion.

2. D'après la question, nous savons que le code source de cette question est similaire à l'écriture d'un moteur de modèle. Remplacez les espaces réservés tels que « {1} » dans le modèle par les paramètres qui lui sont transmis. Donc arg devrait être des arguments. mais! ! ! Puisque arg n'est pas un tableau, mais un objet de type tableau (si vous ne comprenez pas, vous pouvez le rechercher vous-même sur Google (u_u)), nous devons donc effectuer quelques conversions,

Copier le code Le code est le suivant :
var arg=Array.prototype.slice.call(arguments ,0) ;

3. Le côté droit du signe égal est la première réponse vide. Cela dit, le deuxième espace est au centre de notre discussion ~~~~~~Nous savons tous que le deuxième espace consiste à trouver l'espace réservé à l'aide d'expressions régulières et à le convertir en fonction des nombres contenus dans l'espace réservé. la chaîne dans le tableau arg. Pour être honnête, il est rare que le deuxième paramètre de la méthode replace soit une fonction. Généralement, c'est le cas lorsque nous le rencontrons :

.

Copier le code Le code est le suivant :

var modèle=/8(.*)8/;
var str='Ceci est un 8baidu8';
document.write(str.replace(pattern,'$1'));
4. Puisqu'il existe relativement peu de situations où le deuxième paramètre de replace est une fonction, concentrons-nous sur la situation où le deuxième paramètre est une fonction.

Tout d'abord, voici la syntaxe de la fonction replace : stringobject.replace(regexp/substr,replacement)

Où regexp/substr est requis. Un objet regexp qui spécifie la chaîne ou le modèle à remplacer. (Notez que si la valeur est une chaîne, elle est récupérée sous forme de modèle littéral plutôt que d'être d'abord convertie en objet d'expression rationnelle.) Remplacement requis. Une valeur de chaîne. Spécifie les fonctions permettant de remplacer du texte ou de générer du texte de remplacement. Enfin, une nouvelle chaîne est renvoyée, qui est obtenue après avoir remplacé la première correspondance ou toutes les correspondances de l'expression rationnelle par remplacement.

5. ECMAScript stipule que le remplacement du paramètre de la méthode replace() peut être une fonction au lieu d'une chaîne. Dans ce cas, la fonction est appelée pour chaque correspondance et la chaîne qu'elle renvoie est utilisée comme texte de remplacement. Le premier paramètre représente le caractère correspondant, le deuxième paramètre représente la position d'index minimale du caractère correspondant (RegExp.index) et le troisième paramètre représente la chaîne correspondante (RegExp.input).

6. Ainsi, le deuxième espace peut être écrit comme ceci : /{(d )}/g, et la phrase complète lorsqu'elle est placée dans l'instruction est :

Copier le code Le code est le suivant :
return this.str.replace(/{(d )}/g, function (a, b) {
Retourner arg[b] || });


Lors de l'exécution de la première correspondance, {0} est remplacé par arg[0] Lors de la première correspondance, {1} est remplacé par arg[1]

Lors de la première correspondance, {2} est remplacé par arg[2]

7. Ce qui précède est l'explication du deuxième paramètre de la méthode de chaîne js replace() en tant que fonction (s'il y a des imperfections, veuillez les ajouter vous-même. Bien sûr, cette question d'entretien a également été résolue ~). ~~~~

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

Étiquettes associées:
source:php.cn
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal