Javascript枚举模式命名约定
我正在从事一个javascript项目,该项目需要使用javascript“enum”表示以下对象: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
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'
}不幸的是,谷歌的文档自相矛盾。他们说,“像这样”,但随后提供您引用的示例。我更喜欢所有大写字母(很久以前的惯例),但Google文档只是让用户感到困惑。@我不同意-指南说枚举应该用camelcase命名,但它的属性是常量,根据它们的惯例,示例中的所有大写字母都是大写字母。TypeScript枚举使用PascalCase作为枚举名称和枚举成员。也许它来自C#(两者都是由微软开发的)。但无论如何。。。你不应该混合语言。仅仅因为Java使用大写字母并不意味着这也适用于其他语言。此外,我们不应该将JS与TS混用。TS由Microsoft定义,JS由ECMA和community定义。