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

IT技术 javascript oop backbone.js
2021-02-16 01:22:40
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) 为什么要使用它们?

6个回答

这意味着私有字段或私有方法。仅供内部使用的方法。

不应在类之外调用它们。

私有字段包含供内部使用的数据。

不应从类外读取或写入(直接)它们。

注意:需要注意的是,仅仅给变量添加下划线并不会使其成为私有变量,这只是一种命名约定。

至少,私有字段的想法是存在的,但它们并不是真正私有的,无论如何您都可以访问它们。上面代码的作者只是想让它们是私有的。就这样。
2021-04-21 01:22:40
太棒了,不知道为什么我花了这么长时间才找到这个!谢谢。
2021-05-03 01:22:40

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

此处对其进行了简要讨论,但建议不要这样做http : //javascript.crockford.com/code.html

我喜欢这个链接:“避免表现出缺乏能力的惯例。” :-)
2021-05-05 01:22:40
我在调试时将它们用作快捷方式,尤其是 Promise 和其他异步内容。例如,访问我的对象的某些属性的“官方”方式可能是,myObj.getSmePromise().then( function(o) { do stuff } );但在 Chrome 控制台上输入很痛苦,所以我myObj._someValue理解“正确的代码”实际上不会访问它 - 然而,这是如果你正在编写下一个 jQuery/lodash/angular/react 或其他任何东西,我的同事们也知道这个约定,我不会依赖你的所有用户知道或尊重这一点!
2021-05-16 01:22:40

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

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

它可能用于标记内部/私有属性。就像在 python 中给变量加上下划线前缀是一种告诉开发人员变量是内部变量的简单方法,他们最好不要篡改它(如果他们这样做,即使是所涉及的库的小更新也可能会破坏事情)。

通常_用于告诉用户/程序员它是一个私有/受保护的变量。