如何实现一个函数求得可执行字符串(例如${a}+${b}
) 在某一个对象(例如const info = {a: 1, b: 2}
) 下的值呢? 很容易想到的是使用eval
(暂时不考虑安全性),下面是一种实现方案:
execStringExpression(expr, info) {
let exprF = expr.replace(/\$\{([^}]+)\}/g, '${this[\'$1\'] || \'\'}')
const fn = new Function(`return \`${exprF}\``).bind(info || {})
try {
return eval(fn())
} catch(e) { console.log(e); }
return ''
}
复制代码