Javascript枚举模式命名约定

Javascript枚举模式命名约定,javascript,naming-conventions,jshint,Javascript,Naming Conventions,Jshint,我正在从事一个javascript项目,该项目需要使用javascript“enum”表示以下对象: var WinnerEnum = { Player1: 1, Player2: 2, Draw: 0 }; 这对我来说非常有用,但是,我不知道命名枚举的正确方法(根据约定),因为据我所知,只有类名以大写字母开头(表示能够在上调用构造函数) JSHint还输出以下警告: Missing 'new' prefix wh

我正在从事一个javascript项目,该项目需要使用javascript“enum”表示以下对象:

var WinnerEnum = {
            Player1: 1,
            Player2: 2,
            Draw: 0
    };
这对我来说非常有用,但是,我不知道命名枚举的正确方法(根据约定),因为据我所知,只有类名以大写字母开头(表示能够在上调用构造函数)

JSHint还输出以下警告:

Missing 'new' prefix when invoking a constructor.

如果没有约定,我希望有一种命名枚举的好方法,不会将它们与类名混淆更新2014:JSHint不再这样做。

根据谷歌的编码惯例,这确实是用javascript命名枚举的正确方法


根据要求。

这确实是命名枚举的正确方法,但枚举值应为全大写,而不是大写,如下所示:

var WinnerEnum = {
    PLAYER_1: 1,
    PLAYER_2: 2,
    DRAW: 0
};
这与枚举类似

一些参考资料:

与一般的编码风格一样,您会发现人们以许多不同的方式做事,每种方式都有自己的理由。然而,为了让阅读和使用代码的人更容易理解,我建议使用最权威的引用,因此通常采用最广泛的样式


我找不到比谷歌的风格指南和上面的文章更具权威性的参考资料,这些参考资料是由认真考虑过enums的人撰写的,但我很想听到任何更好的参考资料。

您所声明的方式在我看来很好。此外,在上述场景中,
new
在哪里是必需的?new不是必需的,按照惯例,如果变量名是函数和构造函数,则它们只能以大写字母开头。@Benjamin:该警告出现在代码的哪一行?您不会试图调用WinnerEnum,是吗?是的,但在本例中,两者都不是。它只是一个普通的JS对象。所以完全不需要新的。我认为你的代码是完美的。@techfoobar我知道我的代码可以工作,不需要新的,请仔细阅读问题(警告源于JSHint)。你有链接吗?也许在JSHint github上打开一个问题会更好!根据谷歌的编码惯例,这不是命名枚举的正确方法,因为枚举值应该全部大写,而不是大写。您链接到的Google JavaScript样式指南中的一个相关示例是:
some.long.namespace.Fruit={
APPLE:'A',
香蕉:'b'
}