Javascript ES6的属性和备份值命名规范

4
我是一名C#开发者,正在尝试学习JavaScript。我从Aurelia项目开始入手,该项目使用ECMAScript 6。
学习新语言的一部分是理解其命名约定。在这个问题中,我想问的是属性的命名约定(ES6允许使用属性)。
在C#中,我会像这样定义一个带有后备字段的属性:
private string firstName;
public int FirstName
{
     get {return firstName;}
     set {firstName = value;}
}

我的JavaScript构造函数看起来像这样:

constructor()    {
    this.firstName = 'John';    
}

我可以将这个字段进行设置,添加一个setter方法(这样当名字被设置时,我就可以做一些其他的事情)。
然而,如果我像这样设置了我的属性:
set firstName(name) {
    this.firstName = name;
}

然后我正确地收到了堆栈溢出异常(因为setter调用了setter(它们都是小写))。

所以,我应该像在C#中那样将JavaScript属性大写吗?像这样:

constructor()    {
    this.FirstName = 'John';    
}

set FirstName(name) {
    this.firstName = name;
}

get FirstName() {
    return this.firstName;
}

这符合我的C#编码风格,但是我看到的所有JavaScript示例都只使用大写字母来表示类名。

Java Script/ECMAScript 6如何区分后备字段和属性?

注意:我的代码示例来自Aurelia的入门指南

1个回答

1

如果我没记错的话,下面的内容最初是从谷歌编码风格文档中学到的:

set firstName(first_name_str) {
    this.firstNameStr_ = first_name_str;
    if (typeof this.firstNameStr_ !== 'string') throw new TypeError();
}

get firstName() {
    return this.firstNameStr_;
}

在这方面,JavaScript往往与C++相似,尾随的_字符是安全的。


类的数据成员,包括静态和非静态的,命名方式与普通的非成员变量相同,只是在后面加上一个下划线。——Google C++ 编程风格指南 https://google-styleguide.googlecode.com/svn/trunk/cppguide.html - user5321531

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接