如何在创建时从同一对象引用键? [英] How to reference a key from the same object when creating it?

查看:105
本文介绍了如何在创建时从同一对象引用键?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

说我有这样一个对象:

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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆