285 votes

Souligner le préfixe pour les noms de propriété et de méthode en JavaScript

Est le trait de soulignement préfixe en JavaScript seulement d'une convention, comme par exemple en Python privé les méthodes de la classe?

À partir de la 2.7 de Python de la documentation:

"Privé" variables d'instance qui ne peut pas être consulté à l'exception de l'intérieur un objet n'existe pas en Python. Cependant, il y a une convention qui est suivie par plus de code Python: un nom précédé d'un trait de soulignement (par ex. _spam) doivent être traités en tant que non-partie publique de l'API (si il est une fonction, une méthode ou de données membre).

Cela vaut-il pour le JavaScript?

Prenez par exemple ce code JavaScript:

function AltTabPopup() {
    this._init();
}

AltTabPopup.prototype = {
    _init : function() {
        ...
    }
}

Aussi, le trait de soulignement préfixé variables sont utilisées.

    ...
    this._currentApp = 0;
    this._currentWindow = -1;
    this._thumbnailTimeoutId = 0;
    this._motionTimeoutId = 0;
    ...

Seulement les conventions? Ou est-il plus derrière le trait de soulignement préfixe?


J'avoue que ma question est assez similaire à cette question, mais elle n'a pas un de plus intelligent à propos de l'importance du trait de soulignement préfixe en JavaScript.

285voto

Frédéric Hamidi Points 123646

Ce n'est qu'une convention. Le langage Javascript ne permet pas de donner une signification particulière pour les identificateurs commençant par des caractères de soulignement.

Cela dit, il est très utile convention pour une langue qui ne supporte pas l'encapsulation de la boîte. Bien qu'il n'existe aucun moyen pour empêcher quelqu'un d'abuser de vos cours de mise en œuvre, au moins, il n'clarifier votre intention, et des documents, tels que le comportement est mauvais dans la première place.

110voto

Zach Points 3115

JavaScript prend-il réellement encapsulation, grâce à une méthode qui implique le masquage des membres de fermeture (Crockford). Cela dit, il est parfois lourd, et la convention de trait de soulignement est une très bonne convention à utiliser pour les choses qui sont en quelque sorte privés, mais que vous n’avez pas réellement besoin de se cacher.

16voto

philrabin Points 384

JSDoc 3 vous permet d’annoter vos fonctions avec le (précédemment le tag) qui est également utile pour radiodiffusion votre intention aux autres développeurs - http://usejsdoc.org/tags-access.html

13voto

Sam Araiza Points 6

"Seulement les conventions? Ou est-il plus derrière le trait de soulignement préfixe?"

En dehors de la vie privée des conventions, je voulais aussi attirer l'attention que le trait de soulignement préfixe est également utilisé pour les arguments dépendent indépendant arguments, plus précisément dans l'URI d'ancrage des cartes. Dépendant des touches de toujours pointer sur une carte.

Exemple ( à partir de https://github.com/mmikowski/urianchor ) :

$.uriAnchor.setAnchor({ page : 'profil', _page : { uname : 'wendy', en ligne : "aujourd'hui" } });

L'URI d'ancrage sur le navigateur dans le champ de recherche est changé:

#!page=profil:uname,wendy|en ligne,aujourd'hui

C'est une convention utilisée pour piloter un état de l'application basée sur le hachage des changements.

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