当前位置: 首页 > 面试题库 >

JavaScript中属性和方法名称的下划线前缀

彭鸿彩
2023-03-14
问题内容

JavaScript中的下划线前缀仅是约定,例如Python私有类方法中的约定吗?

从2.7 Python文档中:

Python中不存在只能从对象内部访问的“私有”实例变量。但是,大多数Python代码遵循一个约定:以下划线开头的名称(例如_spam)应被视为API的非公开部分(无论是函数,方法还是数据成员)

这也适用于JavaScript吗?

以下面的JavaScript代码为例:

function AltTabPopup() {
    this._init();
}

AltTabPopup.prototype = {
    _init : function() {
        ...
    }
}

另外,使用带下划线的前缀变量。

    ...
    this._currentApp = 0;
    this._currentWindow = -1;
    this._thumbnailTimeoutId = 0;
    this._motionTimeoutId = 0;
    ...

只有约定?还是在下划线前缀后面?


问题答案:

欢迎来到2019!

似乎提出了扩展类语法以允许带#前缀的变量为私有的提议。Chrome 74
附带此支持。

_ 前缀变量名按照惯例被认为是私有的,但仍然是公共的。

尽管它与其他编程语言有很大不同,但该语法试图既简洁又直观。

为什么在所有Unicode代码点中选择标记#?

  • @是最初的最爱,但被装饰者采用。TC39曾考虑过更换装饰器和私人国家的信号灯,但委员会决定遵从转译器用户的现有用法。
  • _会导致与现有JavaScript代码的兼容性问题,这很长时间以来一直允许_以标识符或(公共)属性名称开头。

该提案于2017年7月进入第3阶段。自那时以来,对各种替代方案进行了广泛的思考和冗长的讨论。最后,这种思考过程和社区的持续参与导致对该存储库中的提案重新达成共识。基于该共识,有关此提案的实施正在向前推进。



 类似资料:
  • 问题内容: 即使在今天,我经常在Java变量和方法中看到下划线,例如成员变量(例如“ m_count”或“ _count”)。据我所记得,在这种情况下使用下划线被Sun称为坏样式。 应该使用它们的唯一位置是常量(例如“ public final static int IS_OKAY = 1;”中的常量),因为常量应该全部为大写而不是驼峰式。在这里,下划线应使代码更具可读性。 您认为在Java中使用

  • 问题内容: 可以解释一下在Python中使用对象名称前加下划线的含义吗?另外,说明单首和双首下划线之间的区别。无论所讨论的对象是变量,函数,方法等,该含义是否保持不变? 问题答案: 单下划线 类中带有下划线的名称仅是为了向其他程序员表明该属性或方法旨在私有。但是,名称本身并没有做任何特别的事情。 引用PEP-8: :“内部使用”指标较弱。例如,不导入名称以下划线开头的对象。 双下划线(名称改写)

  • 带有Spring-Data的JPA对名称中带有下划线“_”的属性有问题吗?这是我扩展的接口: 这一行:<code>findByA_my_table_id(长头id) 给出此错误: 无效的派生查询!没有为类型 MyClass 找到属性“a”! 如果我将方法命名为< code > public my class find bya _ my _ table _ id(Long header id);它给

  • rank ▲ ✰ vote url 64 365 174 322 url 在实例名字前单下划线和双下划线的含义 我想刨根问底,这到底是什么意思?解释一下他俩的区别. 单下划线 在一个类中的方法或属性用单下划线开头就是告诉别的程序这个属性或方法是私有的.然而对于这个名字来说并没有什么特别的. 引自PEP-8: 单下划线:"内部使用"的弱指示器.比如,from M import * 将不会引进用但下划

  • 问题内容: 我正在使用go,特别是QT绑定。但是,我不理解以下结构中前导下划线的使用。我知道一般使用下划线,但不知道此特定示例。 它与struct标签有关吗? 问题答案: 这些称为空白字段,因为空白标识符用作字段名称。 不能引用它们(就像任何以空白标识符作为名称的变量一样),但它们会参与结构的内存布局。通常,实际上,它们被用作填充,以将后续字段与字节位置(或内存位置)对齐,以匹配来自(或进入)另一

  • 我想更改编辑文本下面的蓝色,我不知道它是什么属性。 我试着用不同的背景色,但没用。 我在下面附上了一张图片: