【问题标题】:inlining spread operator during declaration es2018在声明 es2018 期间内联扩展运算符
【发布时间】:2018-04-28 11:23:03
【问题描述】:

我想做这样的事情:

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

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

【问题讨论】:

  • 不,你不能这样做,因为对象还不存在。
  • 扩展属性不是 ES6 的一部分。

标签: javascript spread-syntax ecmascript-2018


【解决方案1】:

你不能在对象中自我引用,除非它是一种方法。

你可以这样做:

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

编辑

如果您不希望 translations.uk 成为 ru 的副本并以这种方式保存它自己的数据是行不通的。这只是将translations.uk 设置为对translations.ru 的引用

【讨论】:

    【解决方案2】:

    你必须在传播之前声明这个ru值,即:

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

    【讨论】:

    • 谢谢,Getter 很有意义,因为您在对象实例化之后调用它。
    猜你喜欢
    • 2023-03-27
    • 2011-09-09
    • 1970-01-01
    • 1970-01-01
    • 2012-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多