如何在JavaScript中将匹配的字符串作为变量运行?

时间:2014-01-15 19:31:49

标签: javascript jquery

我正在研究一个非常的基本模板系统并且正在努力。

拿这个:

some useless text here but i want to replace %% this %% with the variable: object.this

这似乎很容易,但我无法弄清楚。这是我的代码:

function loadTemplate(element, object) {
    var regex = /%% (.*) %%/;
    return $(element).html().replace(regex, eval("object.$1"));
}

我尝试了一些不同的东西。目前,eval返回undefined。当我尝试eval("$1")时,它会给我一个未被捕获的引用错误,并告诉我$1未定义。

1 个答案:

答案 0 :(得分:3)

您不需要eval,因为replace需要回调函数;在那里做你的逻辑。第一个参数是匹配的子字符串,第二个参数是第一个捕获组匹配。使用括号表示法,您可以使用字符串动态访问对象的键:

.replace(regex, function(_, a) {
  return object[a];
});