ここで質問に答えていましたルビーの "#{}" シーケンスに相当する JavaScript はありますか? JavaScriptプロトタイプで問題が発生したとき。文字列を印刷、フォーマット、連結するルビーな方法を提供する、最初の機能関数の代替方法を提供したかったのです。なぜ通常の機能は機能し、プロトタイプ機能は機能しないのですか?
<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)})+"
"; }
最初の行は正しいです。連結された文字列です。2 行目は結果ではなく、出力される関数そのものです。