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}";
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
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'
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!