テンプレートエンジン的な

ubiquityにテンプレートがあって便利だナーとおもった。明らかな車輪

function templateEngineInit(hash){
    var obj = new TemplateEngine();
    for(var i in hash){ obj[i] = hash[i];}
    return obj;
};
function templateDirectRender(hash){
    var obj = new TemplateEngine();
    for(var i in hash){ obj[i] = hash[i];}
    return obj.render();
};
function TemplateEngine(){};
TemplateEngine.prototype = {
  target:"#{key1}test#{key2}test#{key1}test#{key2}",
  key_value:{ "key1":"value1","key2":"value2"},
  render:function(){
     var str = this.target;
     for(var i in this.key_value){
       re = new RegExp(this._getreplacer(i),"g");
       str = str.replace(re,this.key_value[i]);
     }
     return str;
  },
  _getreplacer:function(targ){ return "#{" + targ + "}" ;},
};

//use
$(function(){
  var hoge = "ほげ#{key}負が#{key}";
  var str = templateEngineInit({ "target":hoge,key_value:{"key":"value"} }).render();
  alert(str);
  alert(templateDirectRender({"target":hoge,key_value:{"key":"value"}}));
});

うまく動くといいですね。
いまいちprototypeのすっきりした作り方が分からない。