在Javascript中,这个下划线是什么意思?

TIM*_*MEX 81 javascript oop backbone.js

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();
    },
Run Code Online (Sandbox Code Playgroud)

我正在这里阅读backbone.js的教程:http://addyosmani.com/blog/building-spas-jquerys-best-friends/

什么是下划线?(_index,_photos,_album)为什么要使用它们?

DrS*_*ove 152

它意味着私人领域或私人方法.仅供内部使用的方法.

不应该在课外调用它们.

专用字段包含供内部使用的数据.

不应该从课堂外(直接)读取或写入它们.

非常重要的是要注意,只是向变量添加下划线并不会使其成为私有,它只是一个命名约定.

  • 您应该添加下划线只是用于指示私有事物的约定.它实际上不会影响变量的可访问性. (114认同)
  • 至少,私有领域的想法是存在的,但它们并不是真正的私有,无论如何你都可以访问它们.上述代码的作者只是为了让他们成为私人代码.就这样. (4认同)

oli*_*oli 21

据我所知,它通常用于表示私有变量(但实际上并不提供任何隐私,只是一种约定).

这里简要讨论,但建议他们反对:http: //javascript.crockford.com/code.html

  • 我喜欢这个链接:"避免使用缺乏能力的惯例." :-) (3认同)

Rya*_*ons 8

当使用时_varname它只是变量名称的一部分,并且没有javascript含义.开发人员使用它来表示变量的含义或范围.在这种情况下,看起来它告诉开发人员这个变量应该是本地变量或私有变量.

需要注意的一些事项,在这个特定的例子中使用_.varname将表示带有underscore.js库的变量或函数.也可以_varname用来表示一个包含下划线对象的变量,类似于我们的办公室,我们$varname用来表示包含Jquery对象的变量.