wuyq11 return values[arguments[1]]||''

plglenn7 2010-01-24 03:07:08
function showDate() {         
function format(fs, values) {
return fs.replace(/\{(\w+)\}/g, function() {//这里能不能举例子讲解一下
return values[arguments[1]]||'';//这里能不能举例子讲解一下 比如{y}年{m}月 {y:1999,m:1}
});
}
var now = new Date();
document.write(format("{y}年{m}月{d}日 星期", {
y: now.getFullYear()
, m: now.getMonth()+1
, d: now.getDate()
}) + "日一二三四五六".charAt(now.getDay()));
}
...全文
102 8 打赏 收藏 举报
写回复
8 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
阿非 2010-01-25
  • 打赏
  • 举报
回复
"日一二三四五六".charAt(now.getDay());

这个就不用说了吧
阿非 2010-01-25
  • 打赏
  • 举报
回复
replace(正则表达式,函数句柄)

是 js 中 让 replace 函数 变强大的特性(技巧).
----------------------------------------------

return values[arguments[1]]||''; 返回values[arguments[1]] or ''

values 在这里是 json 对象

{ y: now.getFullYear(), m: now.getMonth()+1, d: now.getDate()}

now.getMonth()+1 ,+1 的原因是 js 中的月 是从 0-11 的。

arguments[1] 的值 是和正则有关联的

在这里的值 可选范围是 字符串中 {} 所包裹的

也就是 y,m,d

所以 values[arguments[1]] 的范围就是 now.getFullYear() , now.getMonth()+1, now.getDate()

关于 (/\{(\w+)\}/g ,我正则不行 ,说下个人理解

/g 是全匹配 , 就是匹配字符串中 "{任意单个字符}" 然后以循环的方式 依次调用 ,第二个参数所定义

的函数句柄 ,就是执行函数, 传递的参数有4个, 关键用到的是第二个

原因是根据它从json 中获取相应的值






liaoyukun111 2010-01-25
  • 打赏
  • 举报
回复
UP
plglenn7 2010-01-24
  • 打赏
  • 举报
回复
up
lovexilove 2010-01-24
  • 打赏
  • 举报
回复
up
happyboyxq 2010-01-24
  • 打赏
  • 举报
回复
up
plglenn7 2010-01-24
  • 打赏
  • 举报
回复
举例子讲解一下
lovezhxf 2010-01-24
  • 打赏
  • 举报
回复
没懂你什么意思 ?说详细点。顺便帮顶。、
发帖
JavaScript

8.7w+

社区成员

Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
帖子事件
创建了帖子
2010-01-24 03:07
社区公告
暂无公告