在声明 es2018 期间内联扩展运算符

Posted

技术标签:

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

我想做这样的事情:

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

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

【问题讨论】:

不,你不能这样做,因为对象还不存在。 扩展属性不是 ES6 的一部分。 【参考方案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 很有意义,因为您在对象实例化之后调用它。

以上是关于在声明 es2018 期间内联扩展运算符的主要内容,如果未能解决你的问题,请参考以下文章

使用 ES6 扩展运算符反应道具语法 [重复]

JavaScript ES6 - 函数扩展

JavaScript ES6 - 函数扩展

ES6躬行记——扩展运算符和剩余参数

es6~扩展运算符后续

Babel 无法使用扩展运算符编译 ES6 对象克隆