ホームページ >ウェブフロントエンド >jsチュートリアル >「eval」または「new Function」を使用せずに、通常の文字列をテンプレート リテラルに変換するにはどうすればよいでしょうか?

「eval」または「new Function」を使用せずに、通常の文字列をテンプレート リテラルに変換するにはどうすればよいでしょうか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-11-22 10:05:14765ブラウズ

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

単純な文字列をテンプレート文字列に変換する

通常の文字列を簡単にテンプレート文字列に変換できますか?次の例を考えてみましょう:

let a = "b:${b}";

eval、new Function、またはその他の動的コード生成手法に頼らずに、これをテンプレート文字列に動的に変換するにはどうすればよいでしょうか?

let b = 10;
console.log(a.template()); // b:10

ES6 ソリューション

最新の JavaScript では、ES6 の機能を活用してこれを実現できます。変換:

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'

このメソッドは、パラメーターのオブジェクトを受け入れる String.prototype.interpolate 関数を利用します。オブジェクトのキーと値を使用して新しい関数を動的に構築し、それを実行して補間された文字列を返します。

以上が「eval」または「new Function」を使用せずに、通常の文字列をテンプレート リテラルに変換するにはどうすればよいでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。