Если вам не нужна дополнительная проверка и проверка, вы можете просто заменить {key}
на value
, например:
function applyTemplate(tpl,o) {
for(var key in o)
{
if(o.hasOwnProperty(key))// prevent iteration on any prototype inherited methods
tpl = tpl.replace('{'+key+'}',o[key]);
}
return tpl;
}
Что касается вашей простой первой функции applyTemplate
, так как вы делаетене имея никакого представления о том, каким должен быть ключ, вы можете использовать регулярные выражения для замены только первых {...}
встреченных:
function applyTemplate(tpl,str) {
return tpl.replace(/{.*?}/,str);
}
И затем, конечно, вы можете объединить эти две функции в одну, с небольшимразличные функции, основанные на типе аргументов:
function applyTemplate(tpl,o) {
switch(typeof o){
case 'object' :
for(var key in o)
{
if(o.hasOwnProperty(key))
tpl = tpl.replace('{'+key+'}',o[key]);
}
break;
case 'string' :
tpl = tpl.replace(/{.*?}/,o);
break;
default :
throw new Error('no valid parameters supplied');
}
return tpl;
}
Это должно помочь.Если вам интересно, вы можете взять пик в системе шаблонов jquery: http://api.jquery.com/jQuery.template/.
Надеюсь, это помогло.