ให้ฟังก์ชันนี้:
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
และการแจ้งเตือนคือ