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;
    ...

只有惯例?还是下划线前缀后面还有更多?


我承认我的问题与this question非常相似,但这并没有让人更清楚JavaScript中下划线前缀的重要性.

推荐答案

欢迎来到2019年!

它似乎是一个proposal扩展类语法,允许#个前缀变量是私有的.Chrome 74 ships支持此功能.

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

这种语法力求简洁直观,尽管它与其他编程语言有很大不同.

为什么在所有Unicode代码点中 Select 符号#?

  • @最初是最受欢迎的,但后来被装饰师拿走了.TC39考虑过交换装饰者和私有州标志,但委员会决定遵从转播机用户的现有使用情况.
  • _会导致与现有JavaScript代码的兼容性问题,这在很长一段时间内都允许在标识符或(公共)属性名称的开头使用_.

该提案于2017年7月进入第三阶段.从那时起,人们对各种替代方案进行了广泛的思考和冗长的讨论. 最后,这一思考过程和持续的社区参与导致了对这个存储库中的提案的新的共识.在这一共识的基础上,正在推进这项提议的实施.

https://caniuse.com/#feat=mdn-javascript_classes_private_class_fields

Javascript相关问答推荐

详细说明如何以图表方式改变仪表的范围和 colored颜色

Promise.all立即跳到那时,而不是调用所有Promise

如何解决(不忽略)reaction详尽的linter规则,而不会在获取数据时导致无限的reender循环

nPM审计始终发现0个漏洞

从外部访问组件变量-Vueejs

在时间轴完整日历中显示日期标题

使用JavaScript单击上一个或下一个特定按钮创建卡滑动器以滑动单个卡

确定MutationRecord中removedNodes的索引

if/else JavaScript中的条件行为

如何从html元素创建树 struct ?

显示图—如何在图例项上添加删除线效果?

PDF工具包阿拉伯字体的反转数字

ChartJs未呈现

对路由DOM嵌套路由作出react

在VS代码上一次设置多个变量格式

如果一个字符串前面有点、空格或无字符串,后面有空格、连字符或无字符串,则匹配正则表达式

使每个<;li>;元素的 colored颜色 与随机生成的 colored颜色 列表不同(不重复

匹配一个或多个可选重复的特定模式

每隔3个项目交替显示,然后每1个项目交替显示

如何在独立的Angular 应用程序中添加Lucide-Angel?