Ken*_*yer 216 javascript scope naming-conventions
JavaScript中的下划线前缀只是一个约定,例如在Python私有类方法中是什么?
从2.7 Python文档:
Python中不存在除了从对象内部访问之外无法访问的"私有"实例变量.但是,大多数Python代码都遵循一个约定:前缀为下划线的名称(例如_spam)应被视为API的非公共部分(无论是函数,方法还是数据成员) .
这也适用于JavaScript吗?
以此JavaScript代码为例:
function AltTabPopup() {
this._init();
}
AltTabPopup.prototype = {
_init : function() {
...
}
}
Run Code Online (Sandbox Code Playgroud)
此外,使用下划线前缀变量.
...
this._currentApp = 0;
this._currentWindow = -1;
this._thumbnailTimeoutId = 0;
this._motionTimeoutId = 0;
...
Run Code Online (Sandbox Code Playgroud)
只有会议?或者下划线前缀后面还有更多?
我承认我的问题与这个问题非常相似,但它并没有让人更聪明地了解JavaScript中下划线前缀的重要性.
Zac*_*ach 97
JavaScript实际上支持封装,通过一种涉及将成员隐藏在闭包中的方法(Crockford).也就是说,它有时很麻烦,并且下划线约定是一个非常好的约定,用于私有的东西,但你实际上并不需要隐藏.
phi*_*bin 13
JSDoc 3允许您使用@access private(以前的@private标记)注释您的函数,这对于向其他开发人员广播您的意图也很有用 - http://usejsdoc.org/tags-access.html
"只有约定?或者下划线前缀后面还有更多?"
除了隐私约定之外,我还想帮助提高认识,即下划线前缀也用于依赖于独立参数的参数,特别是在URI锚图中.从属键始终指向地图.
示例(来自 https://github.com/mmikowski/urianchor):
$ .uriAnchor.setAnchor({page:'profile',_ page:{uname:'wendy',online:'today'}});
浏览器搜索字段中的URI锚点更改为:
!#页=简介:UNAME,温迪|在线,今天
这是用于基于散列更改来驱动应用程序状态的约定.
import/export现在正在使用ES6完成工作._如果我的大部分功能都被导出,我仍然倾向于使用前导而不是导出的函数.
如果只导出一个类(如在角项目中),则根本不需要它.
export class MyOpenClass{
open(){
doStuff()
this._privateStuff()
return close();
}
_privateStuff() { /* _ only as a convention */}
}
function close(){ /*... this is really private... */ }
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
159924 次 |
| 最近记录: |