我需要一个javascript函数,可以像原型js框架那样进行插值。任何人都有一个不依赖于原型的插值函数? Jquery是受欢迎的。感谢。
答案 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);