在Javascript中,这个下划线是什么意思?
var Gallery = Backbone.Controller.extend({ _index: null, _photos: null, _album :null, _subalbums:null, _subphotos:null, _data:null, _photosview:null, _currentsub:null, routes: { "": "index", "subalbum/:id": "subindex", "subalbum/:id/" : "directphoto", "subalbum/:id/:num" : "hashphoto" }, initialize: function(options) { var ws = this; if (this._index === null){ $.ajax({ url: 'data/album1.json', dataType: 'json', data: {}, success: function(data) { ws._data = data; ws._photos = new PhotoCollection(data); ws._index = new IndexView({model: ws._photos}); Backbone.history.loadUrl(); } }); return this; } return this; }, //Handle rendering the initial view for the //application index: function() { this._index.render(); },
我在这里阅读有关backbone.js的教程: http : //addyosmani.com/blog/building-spas-jquerys-best-friends/
什么是下划线? (_index,_photos,_album)为什么要使用它们?
这意味着私人领域或私人方法。 仅供内部使用的方法。
他们不应该在课堂之外被调用。
专用字段包含供内部使用的数据。
他们不应该从课堂外(直接)阅读或写入。
需要注意的是,只要给variables添加一个下划线并不是私有的,这只是一个命名约定。
据我所知,它通常用来表示一个私有variables(但实际上并不提供任何隐私,只是一个约定)。
这里简要讨论一下,但是他们不build议: http : //javascript.crockford.com/code.html
当像_varname
一样_varname
它只是variables名称的一部分,并没有JavaScript的含义。 开发人员用它来表示variables的含义或范围。 在这种情况下,它看起来像告诉开发者这个variables应该是一个本地或私有variables。
有几件事要注意,在这个特殊的例子中,使用_.varname
将表示带有underscore.js库的variables或函数。 也可以使用_varname
来表示一个持有下划线对象的variables,与我们的办公室类似,我们使用$varname
来表示一个包含Jquery对象的variables。
它可能用于标记内部/私有属性。 就像在python前面加一个下划线的variables是一个简单的方法告诉开发人员一个variables是内部的,他们最好不要篡改它(如果他们这样做,甚至涉及的库的一个小的更新可能会破坏的东西)。
通常_
用于告诉用户/程序员它是一个私有/受保护的variables。
如上所述,这是许多开发人员的做法,这是一个坏的。 如果你不得不在你的编程方法中使用这样的约定,那么你应该在尝试使用该语言之前学习语言,方法和模式。 如果某人不能区分你的代码中的公共/私有方法而不使用“下划线”,那么你的文档技能就非常缺乏。 networking上的许多公共项目的logging都很差,这可能是为什么大多数受过教育的开发人员“接受”这种“下划线”的规定,而另一些人却决定采用stream程而不是保持正式的devise模式和方法。 “下划线”没有写入ES6 / 7版本是有原因的。
在一篇博客中,我最近遇到了一位软件工程师经理,他说:“ 下划线命名约定可以很容易地告诉我们,variables函数是公开的还是私有的。 ” 我的回应是:“评论像图片,在这种情况下,他们是值得一千下划线。
有一个免费的文档工具叫做Doxygen。 虽然它不特别支持JavaScript,但是当您在注释中使用Doxygen前缀时,它可以为您的JavaScript应用程序生成专业文档。 创build具有文档的JavaScript应用程序非常简单,只需在开发人员和用户上花费一些代码注释。
请记住,有些工具可以删除注释,以及“Production Releases”的控制台语句。 这就是说,源图的使用也浪费时间和资源。 开发构build(无需缩小,保留注释和控制台语句),发布构build(移除注释和控制台声明,缩小开发版本)。开发版本在发布时不需要重新编译高质量的代码,只是准备发布和部署它)。