// Copyright (c) HE Shi-Jun <hax.sfo at gmail dot com>, 2006
// Below codes can be used under GPL (v2 or later) or LGPL (v2.1 or later) license
format2.cache = {} ;
function format2(pattern) {
if (!(pattern in format2.cache)) {
format2.cache[pattern] = new Function('"' + pattern.replace(/"/g, '/"').replace(/$([0-9]+)/g, '" + arguments[$1] + "').replace(/$$/g, '$') + '"');
}
return format2.cache[pattern](arguments);
}
// Below codes can be used under GPL (v2 or later) or LGPL (v2.1 or later) license
format2.cache = {} ;
function format2(pattern) {
if (!(pattern in format2.cache)) {
format2.cache[pattern] = new Function('"' + pattern.replace(/"/g, '/"').replace(/$([0-9]+)/g, '" + arguments[$1] + "').replace(/$$/g, '$') + '"');
}
return format2.cache[pattern](arguments);
}
Compare to previous method, it's even more fast in heavy using (especially on FireFox and Opera), because it's compile the pattern to function and cache it. But this method will waste memory. So the best practice is combining these two methods.
And the no cache version here, but not helpful, because it's lose the advantage of cacheable and will be very slow on Opera:
// Copyright (c) HE Shi-Jun <hax.sfo at gmail dot com>, 2006
// Below codes can be used under GPL (v2 or later) or LGPL (v2.1 or later) license
function format3(pattern) {
return eval('"' + pattern.replace(/"/g, '/"').replace(/$([0-9]+)/g, '" + arguments[$1] + "').replace(/$$/g, '$') + '"');
}
// Below codes can be used under GPL (v2 or later) or LGPL (v2.1 or later) license
function format3(pattern) {
return eval('"' + pattern.replace(/"/g, '/"').replace(/$([0-9]+)/g, '" + arguments[$1] + "').replace(/$$/g, '$') + '"');
}