Rumah >hujung hadapan web >tutorial js >Bagaimanakah Saya Boleh Menukar Rentetan Biasa kepada Templat Literal dalam JavaScript ES6 Tanpa Menggunakan `eval` atau `Fungsi baharu`?
Menukar Rentetan kepada Rentetan Templat dengan ES6
Dalam JavaScript, rentetan templat membolehkan anda membenamkan ungkapan dan pembolehubah terus ke dalam rentetan, memberikan sintaks yang ringkas dan boleh dibaca. Walau bagaimanapun, bagaimana jika anda ingin mencipta rentetan templat daripada rentetan bukan templat sedia ada? Soalan ini meneroka kemungkinan untuk mencapai penukaran ini tanpa menggunakan teknik penjanaan kod dinamik seperti eval atau Fungsi baharu.
Penyelesaian yang disediakan memanfaatkan keupayaan interpolasi rentetan ES6 dengan fungsi interpolasi tersuai. Fungsi ini mengambil objek yang mengandungi parameter templat dan menjana rentetan templat secara dinamik menggunakan literal templat JavaScript.
Begini cara penyelesaiannya berfungsi:
String.prototype.interpolate = function(params) { const names = Object.keys(params); const vals = Object.values(params); return new Function(...names, `return \`${this}\`;`)(...vals); }
Fungsi interpolate ditambahkan sebagai tersuai kaedah prototaip kepada objek String. Ia menerima objek pasangan nilai kunci yang mewakili parameter templat.
const template = 'Example text: ${text}'; const result = template.interpolate({ text: 'Foo Boo' });
Di sini, kami menggunakan fungsi interpolasi pada rentetan templat kami, menghantar objek dengan teks parameter ditetapkan kepada 'Foo Boo'. Fungsi ini mencipta rentetan templat dengan menggunakan literal templat JavaScript dengan pemegang tempat untuk nilai parameter.
console.log(result);
Akhir sekali, kami logkan hasilnya ke konsol, yang sepatutnya mengeluarkan:
Example text: Foo Boo
Penyelesaian ini membolehkan anda menukar rentetan biasa kepada rentetan templat secara dinamik, membolehkan anda mengambil kesempatan daripada ekspresi dan kebolehbacaan yang ditawarkan oleh rentetan templat dalam JavaScript anda kod.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menukar Rentetan Biasa kepada Templat Literal dalam JavaScript ES6 Tanpa Menggunakan `eval` atau `Fungsi baharu`?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!