Rumah > hujung hadapan web > tutorial js > Bagaimanakah Rentetan Biasa Boleh Ditukar kepada Templat Literal Tanpa `eval` atau `Fungsi baharu`?

Bagaimanakah Rentetan Biasa Boleh Ditukar kepada Templat Literal Tanpa `eval` atau `Fungsi baharu`?

Mary-Kate Olsen
Lepaskan: 2024-11-22 10:05:14
asal
761 orang telah melayarinya

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

Menukar Rentetan Mudah kepada Rentetan Templat

Bolehkah rentetan biasa diubah menjadi rentetan templat dengan mudah? Pertimbangkan contoh berikut:

let a = "b:${b}";
Salin selepas log masuk

Bagaimanakah kita boleh menukar ini kepada rentetan templat secara dinamik, tanpa menggunakan eval, Fungsi baharu atau teknik penjanaan kod dinamik yang lain?

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

Penyelesaian ES6

Dalam JavaScript moden, kami boleh memanfaatkan ciri ES6 untuk mencapai ini penukaran:

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'
Salin selepas log masuk

Kaedah ini menggunakan fungsi String.prototype.interpolate yang menerima objek parameter. Ia membina fungsi baharu secara dinamik menggunakan kekunci dan nilai objek, kemudian melaksanakannya untuk mengembalikan rentetan interpolasi.

Atas ialah kandungan terperinci Bagaimanakah Rentetan Biasa Boleh Ditukar kepada Templat Literal Tanpa `eval` atau `Fungsi baharu`?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan