如何在创建时从同一对象引用键? [英] How to reference a key from the same object when creating it?
本文介绍了如何在创建时从同一对象引用键?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
说我有这样一个对象:
var time = {
'second': 1000,
'minute': 1000 * 60,
'hour' : 1000 * 60 * 60,
'day' : 1000 * 60 * 60 * 24,
'week' : 1000 * 60 * 60 * 24 * 7
};
我如何缩短它以便引用其他键?
How would I shorten it so it would reference the other keys?
我的意思是这样的:
var time = {
'second': 1000,
'minute': this.second * 60,
'hour' : this.minute * 60,
'day' : this.hour * 24,
'week' : this.day * 7
}
我无法使用<$ c引用每个$ c> time.foo 因为该变量尚未初始化。我可以简单地在新命令上添加每个命令,例如 time ['hour'] = time.minute * 60;
,但我宁愿在一个命令中执行此操作。
I can't reference each using time.foo
because the variable isn't initialized yet. I could simply add each on a new command, such as time['hour'] = time.minute * 60;
, but I'd rather do it in one command.
推荐答案
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
};
})();
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
};
})();
最后是缩小版本:
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}}()
这篇关于如何在创建时从同一对象引用键?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文