插值函数需要

时间:2011-03-18 19:51:04

标签: javascript jquery

我需要一个javascript函数,可以像原型js框架那样进行插值。任何人都有一个不依赖于原型的插值函数? Jquery是受欢迎的。感谢。

2 个答案:

答案 0 :(得分:1)

根据您的需要,这样的事情可能有效:

String.prototype.interpolate = function(valueMap){
  return this.replace(/\{([^}]+)\}/g, function(dummy, v){
    return valueMap[v];
  });
};

用法:

var params = {
  "speed":"slow",
  "color":"purple",
  "animal":"frog"
};
var template = "The {speed} {color} fox jumps over the lazy {animal}.";
alert(template.interpolate(params));

//alerts:
//"The slow purple fox jumps over the lazy frog."

这将为字符串中括号中的{named}项提供基本插值。

注意:这是一个基本实现,不应该在字符串或参数不安全的情况下使用(例如,如果您要构建SQL语句或其他内容)

答案 1 :(得分:0)

如果您不关心安全性(eval()在严肃的代码中不是一件好事):

evalfun = function (x) {
  return eval(x);
};

String.prototype.interpolate = function (fn) {
  return this.replace( /\{([^}]+)\}/g,
    function ( dummy, v ) {
      return fn( v );
    }
  );
};

var world = "room"
"hello {world}".interpolate(evalfun);