我发现了此功能here,该功能允许在ES5中进行类似ES6的模板制作。
String.prototype.eval = function(data) {
return this.replace(/\${(.*?)}/g, function(_, code) {
var scoped = code.replace(/(["'\.\w\$]+)/g, function(match) {
return /["']/.test(match[0]) ? match : 'scope.' + match;
});
try {
return new Function('scope', 'return ' + scoped)(data);
} catch (e) { return ''; }
});
}
除了属性名称中包含。(点)的情况之外,它的效果都很好。 我的regex技能还不算足够,如何使它能够处理包含。的属性名称(点)?
即“ MY_ATTRIBUTE”有效,而“ MY_ATTRIBUTE.A”无效。