在声明es2018期间内联传播操作员

时间:2017-11-15 09:41:58

标签: javascript spread-syntax ecmascript-2018

我想做这样的事情:

const translations = {
    en: {
        statistics_title: 'Statistics'
    },
    ru: {
        statistics_title: 'Статистика'
    },
    uk: {
        ...ru
    }
}

显然它不起作用,当然,我可以设置另一个const,然后使用它,但我很懒)所以我很好奇,如果javascript允许你这样做?

2 个答案:

答案 0 :(得分:1)

除非是方法,否则你不能在对象中进行自我引用。

你可以这样做:

const translations = {
    en: {
        statistics_title: 'Statistics'
    },
    ru: {
        statistics_title: 'Статистика'
    },
    get uk () {
        return this.ru
    }
}

修改

如果您希望translations.uk不是ru的副本并保留自己的数据,则这种方式无法正常工作。这只是将translations.uk设置为对translations.ru

的引用

答案 1 :(得分:1)

您必须在传播之前声明此ru值,即:

const ru = {
    statistics_title: 'Статистика'
};

const translations = {
    en: {
        statistics_title: 'Statistics'
    },
    ru,
    uk: {
        ...ru
    }
};