1、正则替换
let str = '你爱我,我爱你,${line1}甜蜜蜜。你爱我,我爱你,${line2}${line3}。'; let obj = { line1: '我学编程', line2: '你学编程', line3: '天灭你' }; function templateStrFun(str, obj) { return str.replace(/\$\{(\w+)\}/g, (match, key) => { return obj[key]; }); } templateStrFun(str, obj);
2、with函数
// 代码由掘金大神@一口怪兽一口烟提供 String.prototype.render = function (obj) { with(obj) { return eval('' + this + '') } }
3、es6结构
String.prototype.render = function(obj) { // 利用了ES6的解构、对象keys新方法,在函数内部解构并自动展开变量 eval(var {${Object.keys(obj).join(',')}} = obj) // 利用eval使字符串直接作为ES6解析 return eval('' + this + '') }