在书上看到一段JavaScript日期格式化代码,看不太懂,有没有高手可以帮我添加一下注释解释一下:
Date.prototype.strftime =(function (){ //这里为什么要加(?
function strftime(format){ //这里为什么又要定义一个方法?
var date =this;
return (format +"").replace(/%([a-zA-Z ])/g, //这个正则在这里作用是什么?
function (m,f){ //这里的m,f有什么用?
var formatter =Date.formats &&Date.formats [f ]; //这里Date.formats,Date.formats [f ]各是什么意思
if (typeof formatter =="function"){
return formatter.call(Date.formats,date); //这里是什么意思?
}else if (typeof formatter =="string"){
return date.strftime(formatter);
}
return f;
});
}
//Internal helper
function zeroPad(num){
return (+num <10 ?"0":"")+num;
}
Date.formats ={
//Formatting methods
d:function (date){
return zeroPad(date.getDate());
},
m:function (date){
return zeroPad(date.getMonth()+1);
},
y:function (date){
return date.getYear()%100;
},
Y:function (date){
return date.getFullYear();
},
//Format shorthands
F:"%Y-%m-%d",
D:"%m/%d/%y"
};
return strftime; //这里为什么又有一个return?
}());
看看javascript的面向对象,这些你就明白了。
学习。。。