0

我在这里回答了一个问题是否有 JavaScript 等价于 ruby​​s“#{}”序列?当我遇到 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)})+"
"; }

第一行是正确的,它是连接的字符串,第二行是打印的函数本身,而不是结果..

4

1 回答 1

2

"#{f} #{b}".p指的是函数本身(String.p),因为“#{f} #{b}”是一个字符串。

你想让"#{f} #{b}".p()它打印 foo bar。

于 2012-04-13T20:49:15.447 回答