近日看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版本兼容性说明。