// 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, '$') + '"');
}
JS格式化字符串优化
本文介绍了一种通过将模式编译为函数并缓存来优化JavaScript中字符串格式化的高效方法,这种方法尤其适用于Firefox和Opera浏览器中的高负载场景,尽管会消耗更多内存。
925

被折叠的 条评论
为什么被折叠?



