Maison  >  Article  >  interface Web  >  Une chaîne régulière peut-elle être convertie en un modèle littéral en JavaScript sans « eval » ou « new Function » ?

Une chaîne régulière peut-elle être convertie en un modèle littéral en JavaScript sans « eval » ou « new Function » ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-23 00:40:12337parcourir

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

Conversion d'une chaîne en chaîne de modèle

Une chaîne habituelle peut-elle être convertie en chaîne de modèle, éliminant ainsi le besoin de techniques de génération de code dynamique comme eval ou new Function ?

Réponse :

Oui, dans ES6, une méthode personnalisée peut être ajoutée au prototype String :

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);

Cette méthode prend un objet comme argument, où les clés représentent les variables de chaîne du modèle et les valeurs sont leurs remplacements. Il crée une nouvelle fonction qui renvoie la chaîne de modèle interpolée et l'exécute avec les valeurs fournies.

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!

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