Maison > interface Web > js tutoriel > Comment une chaîne normale peut-elle être convertie en un modèle littéral sans « eval » ou « new Function » ?

Comment une chaîne normale peut-elle être convertie en un modèle littéral sans « eval » ou « new Function » ?

Mary-Kate Olsen
Libérer: 2024-11-22 10:05:14
original
762 Les gens l'ont consulté

How Can a Regular String Be Converted to a Template Literal Without `eval` or `new Function`?

Transformer des chaînes simples en chaînes de modèle

Une chaîne ordinaire peut-elle être transformée sans effort en chaîne de modèle ? Prenons l'exemple suivant :

let a = "b:${b}";
Copier après la connexion

Comment pouvons-nous convertir cela dynamiquement en une chaîne de modèle, sans recourir à eval, new Function ou à d'autres techniques de génération de code dynamique ?

let b = 10;
console.log(a.template()); // b:10
Copier après la connexion

Une solution ES6

Dans le JavaScript moderne, nous pouvons exploiter les fonctionnalités ES6 pour y parvenir conversion :

String.prototype.interpolate = function(params) {
  const names = Object.keys(params);
  const vals = Object.values(params);
  return new Function(...names, `return \`${this}\`;`)(...vals);
};

const template = 'Example text: ${text}';
const result = template.interpolate({
  text: 'Foo Boo'
});
console.log(result); // 'Example text: Foo Boo'
Copier après la connexion

Cette méthode utilise la fonction String.prototype.interpolate qui accepte un objet de paramètres. Il construit dynamiquement une nouvelle fonction en utilisant les clés et les valeurs de l'objet, puis l'exécute pour renvoyer la chaîne interpolée.

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.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
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