将简单字符串转换为模板字符串
可以轻松地将常规字符串转换为模板字符串吗?考虑以下示例:
let a = "b:${b}";
我们如何动态地将其转换为模板字符串,而不诉诸 eval、new Function 或其他动态代码生成技术?
let b = 10; console.log(a.template()); // b:10
ES6 解决方案
在现代 JavaScript 中,我们可以利用 ES6 功能来实现这一点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'
此方法利用接受参数对象的 String.prototype.interpolate 函数。它使用对象的键和值动态构造一个新函数,然后执行它以返回插值字符串。
以上是如何在没有'eval”或'new Function”的情况下将常规字符串转换为模板文字?的详细内容。更多信息请关注PHP中文网其他相关文章!