近日看Ext-1.0.1源代码,在Ext.js的第552行有如下代码:
[code] format : function(format){
var args = Array.prototype.slice.call(arguments, 1);
return format.replace(/\{(\d+)\}/g, function(m, i){
return args[i];
});
}[/code]
该方法实现如下功能:
[code]String.format("name is {0} and age is {1}", "John", 12) => name is John and age is 12[/code]
上述代码中的replace方法的调用很意思,它接收的第二个参数是一个function,而我们通常调用replace方法时第二个参数传递的一般是String。
直接上google查找javascript reference,但很少有提到这种用法的。后来在[url=http://developer.mozilla.org/en/docs/Core_JavaScript_1.5_Reference:Objects:String:replace#Specifying_a_function_as_a_parameter]mozilla的参考文档[/url]中终于找到了这种用法,这里有详细的API及javascript版本兼容性说明。
[code] format : function(format){
var args = Array.prototype.slice.call(arguments, 1);
return format.replace(/\{(\d+)\}/g, function(m, i){
return args[i];
});
}[/code]
该方法实现如下功能:
[code]String.format("name is {0} and age is {1}", "John", 12) => name is John and age is 12[/code]
上述代码中的replace方法的调用很意思,它接收的第二个参数是一个function,而我们通常调用replace方法时第二个参数传递的一般是String。
直接上google查找javascript reference,但很少有提到这种用法的。后来在[url=http://developer.mozilla.org/en/docs/Core_JavaScript_1.5_Reference:Objects:String:replace#Specifying_a_function_as_a_parameter]mozilla的参考文档[/url]中终于找到了这种用法,这里有详细的API及javascript版本兼容性说明。
本文探讨了Ext-1.0.1源代码中Ext.js的字符串格式化方法,并详细解释了其内部使用`replace`方法的一个特殊用法,即通过传入一个函数作为替换参数来实现动态字符串格式化。
1589

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



