2013-06-20 2 views
0

Ces derniers jours, j'ai beaucoup parlé de la différence d'expression de fonction et de déclarations en javascript. La plupart du temps il a dit que l'expression de fonction est la manière préférée de créer des fonctions en javascript. Parfois, il a dit le contraire, donc je ne suis pas sûr, mais je reste avec des expressions pour le moment.Variables dans les expressions de fonction

Mais il y a une chose à propos des expressions que je ne pouvais pas trouver comme exemple. C'est peut-être une question stupide, mais j'aimerais vraiment savoir. Supposons que nous avons une expression de fonction comme

var nav = { 
    init: function() { 
     // Code 
    }, 
    open: function() { 
     // Code 
    }, 
    close: function() { 
     // Code 
    } 
}; 

Dans ce cas, il s'agit d'une fonction pour une navigation déroulante ou quelque chose. Vous devriez être capable de l'ouvrir et de le fermer, à titre d'exemple. Maintenant, je vous demande, comment puis-je définir des variables dans ce code, afin que je puisse les utiliser dans les fonctions "open", "close" et "init"? Dans ce cas particulier, j'ai probablement besoin de variables comme:

var 
    $nav = $(".nav"), 
    navHeight = $nav.height(), 
    navTest = "Test"; 

Comment le feriez-vous normalement? Il se peut que ces questions aient déjà été répondues ailleurs, mais je n'ai vraiment rien trouvé, peut-être parce que j'ai cherché les mauvais mots-clés.

Je serais très reconnaissant si quelqu'un pouvait me l'expliquer/envoyez-moi un lien vers un tutoriel - pour un débutant fonction javascript :)

Merci :)

Répondre

1

Vous pouvez conserver des variables partagées dans les fermetures qui les garder privées aux méthodes de votre objet. Une technique courante est la module pattern.

Vous pourriez également être intéressé par Private Members in Javascript.

+0

Merci pour votre lien, je suis encore nouveau sur javascript et je ne l'utiliserai que pour des choses liées au frontend (trucs simples pour faire des animations sur le défilement par exemple, un curseur, une galerie, etc.). Ce que j'ai toujours fait était juste d'écrire toutes les différentes fonctions de jQuery, de hover etc., les unes après les autres. Donc, pour rester avec mon exemple de nav je l'ai fait: http://codepen.io/anon/pen/hcdHs – Daniel

+0

Donc, je ne suis pas sûr si pour mes besoins et mon expérience j'ai besoin de fonction privée et publique (je ne suis même pas sûr, quand pour utiliser lequel d'entre eux), je veux juste écrire du code, c'est plus structuré, c'est pourquoi je suis venu avec des expressions de fonction, qui me semblent structurées. Est-ce la bonne façon pour moi, que pensez-vous ou comment vous, en tant qu'expert, manipulez le code (voir le code ci-dessus)? – Daniel

1

Eh bien, vous créez des fonctions en tant que propriétés de l'objet nav. Vous pouvez simplement ajouter des variables en tant qu'autres propriétés avec ces fonctions.

var nav = { 
    myHeight: 12, 
    height: function() { 
     return this.myHeight; 
    }, 
    increaseHeight: function(howMuch) { 
     this.myHeight += howMuch; 
    } 
    init: function() { 
     // use this.myVariable here 
    }, 
    // ... 
}; 
+0

Merci qui répond à ma question pour les variables. Où puis-je déclarer des variables si j'en ai besoin pour des expressions différentes? Donc par exemple j'ai besoin du "var $ body = $ (" body ")" dans "var nav = function() {...}" et "var quelque chose = function() {...}"? Est-ce que je l'écris juste en haut du dossier ou y a-t-il un meilleur moyen? – Daniel

+0

Eh bien, vous pouvez simplement l'écrire en haut du fichier, mais cela en fera une autre variable globale (comme 'nav'). Vous pouvez envisager d'utiliser le modèle de module pour éviter d'encombrer la portée globale avec une autre variable, et placer '$ body',' nav' et 'quelque chose 'dans le même module et exposer uniquement les variables que vous voulez. – elias

+0

Merci, je vais jeter un coup d'oeil au modèle de module et voir si je le comprends d'une manière ou d'une autre. – Daniel

Questions connexes