2011-03-18 52 views
2

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

+1

你可能有更好的运气,如果你真的告诉我们这个功能应该做的。 – Andrea 2011-03-18 20:32:08

回答

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语句或东西)

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);