Tgw*_*man 4 javascript json object
说我有一个像这样的对象:
var time = {
'second': 1000,
'minute': 1000 * 60,
'hour' : 1000 * 60 * 60,
'day' : 1000 * 60 * 60 * 24,
'week' : 1000 * 60 * 60 * 24 * 7
};
Run Code Online (Sandbox Code Playgroud)
我如何缩短它以便引用其他键?
我的意思是这样的:
var time = {
'second': 1000,
'minute': this.second * 60,
'hour' : this.minute * 60,
'day' : this.hour * 24,
'week' : this.day * 7
}
Run Code Online (Sandbox Code Playgroud)
我无法引用每个使用time.foo因为变量尚未初始化.我可以简单地在一个新命令上添加每个命令,例如time['hour'] = time.minute * 60;,但我宁愿在一个命令中执行它.
你不能引用它自己的属性如果你因为属性不存在那样声明它,你可能想尝试不同的方法
var time = {};
time.second = 1000;
time.minute = time.second * 60;
...
Run Code Online (Sandbox Code Playgroud)
var time = (function(){
var second = 1000,
minute = second * 60,
hour = minute * 60,
day = hour * 24,
week = day * 7;
return {
'second': second,
'minute': minute,
'hour' : hour,
'day' : day,
'week' : week
};
})();
Run Code Online (Sandbox Code Playgroud)
UPD
更短:
var time = (function(){
var w, d, h, m, s;
w = (d = (h = (m = (s = 1000) * 60) * 60) * 24) * 7;
return {
second: s,
minute: m,
hour : h,
day : d,
week : w
};
})();
Run Code Online (Sandbox Code Playgroud)
最后是缩小版本:
var time=function(){var a,b,c,d,e;a=(b=(c=(d=(e=1e3)*60)*60)*24)*7;return{second:e,minute:d,hour:c,day:b,week:a}}()
Run Code Online (Sandbox Code Playgroud)