92 votes

En Javascript, que signifie ce trait de soulignement ?

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();
    },

Je suis en train de lire un tutoriel sur backbone.js ici : http://addyosmani.com/blog/building-spas-jquerys-best-friends/

Que sont les underscores ? (_index, _photos, _album) Pourquoi les utiliser ?

2 votes

Les underscores n'ont aucune signification syntaxique, c'est probablement une convention pour ce programmeur particulier pour signifier le type des variables.

0 votes

177voto

DrStrangeLove Points 2919

Cela signifie des champs privés ou des méthodes privées. Des méthodes qui sont uniquement destinées à un usage interne.

Ils ne doivent pas être invoqués en dehors de la classe.

Les champs privés contiennent des données à usage interne.

Ils ne doivent pas être lus ou écrits (directement) en dehors de la classe.

Nota: Il est très important de noter que le simple fait d'ajouter un trait de soulignement à une variable ne la rend pas privée, il s'agit seulement d'une convention de dénomination.

5 votes

Au moins, l'idée de champs privés est là, mais ils ne sont pas vraiment privés, vous pouvez y accéder de toute façon. l'auteur du code ci-dessus voulait juste qu'ils soient privés. c'est tout.

0 votes

Génial, je ne sais pas pourquoi ça m'a pris si longtemps pour chercher ça ! Merci.

22voto

oli Points 2091

Pour autant que je sache, il est généralement utilisé pour indiquer une variable privée (mais ne fournit pas réellement de confidentialité, juste une convention).

On en parle brièvement ici, mais on les déconseille : http://javascript.crockford.com/code.html

3 votes

J'aime ce lien : "Évitez les conventions qui démontrent un manque de compétence." :-)

0 votes

Je les utilise comme raccourcis lors du débogage, particulièrement avec les Promesses et autres trucs asynchrones. Par exemple, la façon "officielle" d'accéder à un attribut de mon objet pourrait être la suivante myObj.getSmePromise().then( function(o) { do stuff } ); mais c'est pénible à taper dans la console de Chrome, alors j'ai mis myObj._someValue étant entendu que le "bon code" n'y accèdera pas - ceci est, cependant, avec le luxe de mes collègues connaissant également cette convention, si vous écrivez le prochain jQuery/lodash/angular/react ou autre, je ne compterais pas sur le fait que tous vos utilisateurs connaissent ou respectent ceci !

8voto

Ryan Gibbons Points 1631

Lorsqu'il est utilisé comme _varname c'est juste une partie du nom des variables, et n'a aucune signification en javascript. Les développeurs l'utilisent pour signifier la signification ou la portée de la variable. Dans ce cas, il semble qu'il indique au développeur que cette variable doit être une variable locale ou privée.

Quelques points à noter, dans cet exemple particulier utilisant _.varname signifierait une variable ou une fonction avec la bibliothèque underscore.js. On peut aussi utiliser _varname pour signifier une variable contenant un objet souligné, de la même manière, à notre bureau, nous utilisons $varname pour signifier une variable contenant un objet Jquery.

4voto

ThiefMaster Points 135805

Il est probablement utilisé pour marquer les propriétés internes/privées. Tout comme en python, préfixer une variable avec un trait de soulignement est un moyen facile de dire aux développeurs qu'une variable est interne et qu'ils feraient mieux de ne pas l'altérer (et s'ils le font, même une mise à jour mineure de la bibliothèque concernée peut casser les choses).

2voto

Habituellement _ est utilisé pour indiquer à l'utilisateur/programmeur qu'il s'agit d'une variable privée/protégée.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X