En Javascript, qu'est-ce trait de soulignement veux dire?
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 la backbone.js ici: http://addyosmani.com/blog/building-spas-jquerys-best-friends/
Quels sont les traits de soulignement? (_index, _photos, _album) Pourquoi les utiliser?
- les traits de soulignement ont pas de sens syntaxique, c'est probablement une convention pour le programmeur d'indiquer le type des variables
- double possible de trait de Soulignement préfixe pour les biens et les noms de méthode en JavaScript
Vous devez vous connecter pour publier un commentaire.
Cela signifie privé de champs ou de méthodes privées. Les méthodes qui ne sont que pour une utilisation interne.
Ils ne doivent pas être invoquées à l'extérieur de la classe.
Privée champs contiennent des données pour un usage interne.
Ils ne devraient pas être lue ou écrite dans (directement) à partir de l'extérieur de la classe.
Il est très important de noter que le simple ajout d'un trait de soulignement à une variable n'est pas privé, c'est seulement une convention de nommage.
Autant que je suis au courant, il est généralement utilisé pour indiquer qu'une variable privée (mais n'est pas réellement fournir toute confidentialité, qu'une convention).
Il en parle brièvement ici, mais elles sont déconseillées:
http://javascript.crockford.com/code.html
myObj.getSmePromise().then( function(o) { do stuff } );
mais c'est une douleur à type au Chrome de la console, j'ai donc mismyObj._someValue
sur la compréhension que "bon code" n'est pas réellement accès à l'il - ce n'est, cependant, avec le luxe de mes collègues également de connaître la présente convention, si vous êtes en train de rédiger la prochaine jQuery/lodash/angulaire/réagir ou ce que je ne voudrais pas compter sur l'ensemble de vos utilisateurs tout en sachant ou en respectant cette!Lorsqu'il est utilisé comme
_varname
c'est juste une partie des variables nom, et n'a pas de javascript sens. Les développeurs de l'utiliser pour signifier le sens ou la portée de la variable. Dans ce cas, il ressemble c'est dire le développeur de cette variable doit être un local privé ou variable.Quelques choses à noter, dans cet exemple particulier, à l'aide de
_.varname
signifierait une variable ou une fonction de la underscore.js de la bibliothèque. Aussi on pourrait utiliser_varname
pour signifier une variable contenant un trait de soulignement de l'objet, de la même façon à notre bureau, nous utilisons$varname
pour signifier une variable contenant un objet Jquery.C'est probablement utilisé pour marquer interne/propriétés privées. Tout comme en python préfixant une variable avec un trait de soulignement est un moyen facile de dire que les développeurs une variable est à l'intérieur et qu'il est mieux de ne pas y toucher (et s'ils le font, même une mise à jour mineure de la bibliothèque peut casser des choses).
Généralement
_
est utilisé pour indiquer à l'utilisateur/programmeur que c'est un privé/protégé de la variable en question.Comme mentionné, c'est une pratique parmi de nombreux développeurs, et un mauvais à ce. Si vous avez recours à des conventions de ce genre dans vos méthodes de programmation, alors vous devriez apprendre la langue, de méthodes et de modèles avant de tenter d'utiliser la langue. Si quelqu'un ne peut pas distinguer entre public/privé méthodes dans votre code avec l'utilisation du "trait de soulignement", alors votre documentation de compétences sont extrêmement basse. Beaucoup de projets sur le web sont très mal documentés, ce qui est probablement la raison pour laquelle le "trait de soulignement" conventions a été "accepté" par la plupart des sous éduqués développeurs, tandis que d'autres ont décidé d'aller avec le flux, plutôt que de garder la conception formelle des modèles et des méthodes. Il y a une raison pour laquelle le "trait de soulignement" n'a pas été écrit dans l'ES6/7 versions.
Dans un blog je suis récemment tombé sur un Logiciel Ingénieur Manager, qui a déclaré: "Le trait de soulignement convention de nommage, il est vraiment facile de dire, en un coup d'œil, si une variable fonction est destinée à être publique ou privée.". Ma réponse est: "les Commentaires sont comme des images, dans ce cas, ils valent mille traits de soulignement.
Il y a une documentation libre outil Doxygen. Bien qu'il ne prend pas spécifiquement en charge JavaScript, il peut générer de la documentation d'un professionnel pour vos applications JavaScript lorsque vous utilisez Doxygen préfixe est dans vos commentaires. Il est vraiment simple de créer des applications JavaScript avec de la documentation, des développeurs et des utilisateurs lorsque vous mettez un peu d'effort dans vos commentaires dans le code.
Rappelez-vous, il existe des outils qui peuvent supprimer des commentaires, et la console consolidés pour "la Production de Rejets". Cela étant dit, l'utilisation de cartes sont un gaspillage de temps et de ressources aussi. Ne pas rapetisser jusqu'à ce que votre prêt à publier.. c'est à dire Dev Build (pas de minification, garder les commentaires et console de déclarations), Version validée (supprimer des commentaires, et la console de déclarations et de rapetisser le Dev construire. Pas besoin de recompiler le Dev Construire lors de sa sortie un code de qualité, juste le préparer pour la libération et de l'appliquer).
C'est un léger supplément. Comme déjà répondu à ces pseudo variables privées. Mais il est alors possible d'écrire des pseudo-fonctions publiques que l'accès à ces variables privées.
J'ai eu confusion de la part des collègues de code qui fait cela (mais enterré très profondément dans une bibliothèque séparée):
Vous avez maintenant
y.id
ety._id
que le travail et le retour la même valeur. Mais si vous neconsole.log(y)
il ne montre que le_id
clé.