我在这里回答了一个问题是否有 JavaScript 等价于 rubys“#{}”序列?当我遇到 javascript 原型问题时。我想提供第一个工作函数的另一种方式,它提供了一种打印、格式化和连接字符串的 ruby 方式。为什么正常功能起作用而原型功能不起作用?
<script>
function p(str){
document.write(str.replace(/#{(\w)}/g, function(match, s){return eval(s)})+"<br>");
}
String.prototype.p = function() {
return this.replace(/#{(\w)}/g, function(match, s){return eval(s)})+"<br>";
};
var f="foo", b="bar"
p("#{f} #{b}")
document.write("#{f} #{b}".p);
</script>
这给了
foo bar
function () { return this.replace(/#{(\w)}/g, function(match, s){return eval(s)})+"
"; }
第一行是正确的,它是连接的字符串,第二行是打印的函数本身,而不是结果..