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

Barbara Streisand
リリース: 2024-11-27 08:24:10
オリジナル
491 人が閲覧しました

How Can I Convert a Regular String to a Template Literal in ES6 JavaScript Without Using `eval` or `new Function`?

ES6 で文字列をテンプレート文字列に変換する

JavaScript では、テンプレート文字列を使用して式や変数を文字列に直接埋め込むことができます。簡潔で読みやすい構文。しかし、既存の非テンプレート文字列からテンプレート文字列を作成したい場合はどうすればよいでしょうか?この質問では、eval や new Function などの動的コード生成手法を使用せずにこの変換を実現できる可能性を検討します。

提供されるソリューションは、カスタム補間関数を使用した ES6 の文字列補間機能を利用します。この関数は、テンプレート パラメーターを含むオブジェクトを受け取り、JavaScript テンプレート リテラルを使用してテンプレート文字列を動的に生成します。

ソリューションの仕組みは次のとおりです。

String.prototype.interpolate = function(params) {
  const names = Object.keys(params);
  const vals = Object.values(params);
  return new Function(...names, `return \`${this}\`;`)(...vals);
}
ログイン後にコピー

補間関数はカスタムとして追加されます。プロトタイプメソッドを String オブジェクトに追加します。テンプレート パラメーターを表すキーと値のペアのオブジェクトを受け入れます。

const template = 'Example text: ${text}';
const result = template.interpolate({
  text: 'Foo Boo'
});
ログイン後にコピー

ここでは、補間関数をテンプレート文字列に適用し、パラメーター テキストが「Foo Boo」に設定されたオブジェクトを渡します。この関数は、パラメーター値のプレースホルダーを持つ JavaScript テンプレート リテラルを利用して、テンプレート文字列を作成します。

console.log(result);
ログイン後にコピー

最後に、結果をコンソールに記録します。出力は次のとおりです。

Example text: Foo Boo
ログイン後にコピー

このソリューションを使用すると、通常の文字列をテンプレート文字列に動的に変換でき、JavaScript でテンプレート文字列によってもたらされる表現力と読みやすさを活用できるようになります。コード。

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート