将字符串转换为模板字符串
2022-08-30 01:18:03
是否可以将模板字符串创建为常规字符串,
let a = "b:${b}";
然后将其转换为模板字符串,
let b = 10;
console.log(a.template()); // b:10
没有 ,以及其他动态代码生成方法?eval
new Function
是否可以将模板字符串创建为常规字符串,
let a = "b:${b}";
然后将其转换为模板字符串,
let b = 10;
console.log(a.template()); // b:10
没有 ,以及其他动态代码生成方法?eval
new Function
在我的项目中,我用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);
由于模板字符串必须动态获取对变量的引用(在运行时),因此答案是:不,如果没有动态代码生成,就不可能做到这一点。b
但是,它非常简单:eval
let tpl = eval('`'+a+'`');