Я укушу; -)
var properties = { ... };
var template = element.innerHTML;
element.innerHTML = template.replace (
RegExp ('\\$\\{(' + getTags (properties).join ('|') +')\\}'),
function (m0, tag) {return properties[tag];});
function getTags (obj) {
var tags = [];
for (var t in obj)
hasOwnProperty (t) && tags.push (t);
return tags;
}
По-прежнему просматривает теги свойств (при вызове getTags), но создает только
один объект регулярного выражения и сканирует шаблон только один раз.
Обратите внимание, что имена тегов в свойствах не должны содержать специальных символов регулярных выражений (например, или (и т. Д.).
Я бы согласился с Джейсоном, хотя, вероятно, не стоит усилий, если нет большого количества тегов или шаблон очень большой.