この関数を考えると:
function Repeater(template) {
var repeater = {
markup: template,
replace: function(pattern, value) {
this.markup = this.markup.replace(pattern, value);
}
};
return repeater;
};
どうすればthis.markup.replace()
グローバルに置換できますか?ここに問題があります。私がこのようにそれを使うならば:
alert(new Repeater("$TEST_ONE $TEST_ONE").replace("$TEST_ONE", "foobar").markup);
アラートの値は「foobar $ TEST_ONE」です。
変わったら Repeater
次のようすると、Chromeでは何も置き換えられません。
function Repeater(template) {
var repeater = {
markup: template,
replace: function(pattern, value) {
this.markup = this.markup.replace(new RegExp(pattern, "gm"), value);
}
};
return repeater;
};
...アラートは$TEST_ONE $TEST_ONE
です。