嵌套 ES6 类

问题描述

在我目前正在开发的混合移动应用程序中,我正在整合应用程序根据用户选择执行的操作更改其整个前端的功能。我通过下载一个类似于下面的 ES6 文件形式的“个性模块”来做到这一点。

window.guff = class
{
 static Hello(){alert('Hello from Window.guff');}
 
 static gaff = class
 {
  static Hello(){alert('Bonjour from Window.guff.gaff');}
 } 
 
 static goo = class
 {
  static Hello(){alert('Ciao from Window.guff.goo');}
 }
  
}

guff.Hello();
guff.gaff.Hello();
guff.goo.Hello();
毋庸置疑,每个个性模块都将具有相同的类层次结构和相同的方法(在应用代码中适当注意以处理缺失方法和/或嵌套类形式的失误)。

这有效 - 至少在 Chrome 中是这样。然而,我并不完全清楚这是 ES6 的合法使用。 VSCode 不断标记错误”,尽管我怀疑这是由于 JSHint 无法处理我的代码

我的问题 - 使用 ES6 类合法吗?如果没有,是否有更好的方法来完成我在这里想做的事情?

解决方法

我的问题 - 使用 ES6 类合法吗?如果没有,是否有 在这里完成我想做的事情的更好方法?

正如@quentin 所指出的,普通对象就是这样:

window.guff = {
    Hello: () => { alert('Hello from Window.guff'); },gaff: {
        Hello: () => { alert('Bonjour from Window.guff.gaff'); }
    },goo: {
        Hello: () => { alert('Ciao from Window.guff.goo'); }
    },};

如果你想锁定这个对象,你可能想看看Object.freeze(window.guff)