2008-09-24 8 views
5

Avez-vous les gars et les filles eu des conseils ou des hacks pour tirer le meilleur parti des options JavaScript IntelliSense dans Visual Studio 2008?IntelliSense JavaScript dans Visual Studio 2008

Considérez ce qui suit:

var Persons = {}; 
    Persons.Females = {}; 

Persons.Females.Julie = function (_mood) 
{ 
    /// <param name="_mood">Mood of Julie</param> 
    /// <summary>Constructor function: Julie, a 22 year old female</summary> 
    /// <returns>New instance of Julie</returns> 

    var breasts, thighs, stomach; // Private variables 

    this.mood = _mood; // Public variable 


    function accessBodypart(_bodypart) // Private function 
    { 
     /// <param name="_bodypart">Bodypart to access</param> 
    } 


    this.access = function (_bodypart, _accessee) // Privileged function 
    { 
     /// <param name="_bodypart">Access a bodypart on Julie</param> 
     /// <param name="_accessee">Person accessing Julie</param> 
     /// <summary>If you have sufficient rights, you may use this 
     /// function</summary> 
     /// <returns>Julie's reaction</returns> 

     if (_accessee.status === "boyfriend") 
     { 
      accessBodypart(_bodypart); 

      return "Giggles"; 
     } 

     return "Slap in the face"; 
    }; 
}; 


var happyJulie = Persons.Females.Julie("happy"); 

Visual Studio me montre les "namespaces" et utilise les fonctionnalités de documentation (<param> et <summary>). Je n'ai pas pu obtenir la fonctionnalité de documentation <return> cependant.

Maintenant, tout va bien. Mais quand je fais:

happyJulie.access("breasts"); 

Visual Studio ne connaît pas la fonction access et je reçois aucune documentation.

Existe-t-il un moyen d'exposer les variables publiques et les fonctions privilégiées à la fonctionnalité intellisense de Visual Studios, tout en créant des objets avec des membres privés?

Oui, en utilisant l'ensemble car->wheels->tires vieillit à un moment donné :)

+4

omg. happyJulie.access ("seins") est le meilleur exemple de tous les temps. –

+0

Hehe. J'espère que ça ne va offenser personne :) – roosteronacid

+1

2 votes offensifs jusqu'à présent. Et nous nous demandons pourquoi plus de femmes ne sont pas des programmeurs .. soupir. –

Répondre

4

Javascript IntelliSense est certainement squameuse jusqu'à reconnaître les membres de la fonction. J'ai eu un peu plus de succès en utilisant le paradigme du prototype, donc c'est quelque chose que vous pourriez vérifier. Souvent, cependant, je trouve qu'il ne sera toujours pas fiable liste des fonctions dans l'Intellisense.
Modifier: Comme l'affiche originale suggéré dans les commentaires ci-dessous, ce n'est pas vraiment possible d'obtenir la même fonctionnalité "privée" dans le modèle du prototype. Javascript n'a pas de concept de membre privé, mais vous pouvez émuler la confidentialité des membres avec la fermeture en les déclarant dans le constructeur de la fonction. Le moyen cependant que si vous avez des fonctions qui ont besoin d'accéder aux membres, ils doivent aussi être dans le constructeur, donc ils ne peuvent pas être des prototypes.
Alors que l'utilisation du modèle prototype peut (ou non) vous donner un meilleur VS Intellisense, elle n'est utile que pour les fonctions publiques qui touchent les membres publics et ne peut pas être utilisée pour améliorer intellisense pour des fonctions privées ou privilégiées. Fonctions privées vous ne voulez probablement pas intellisense de toute façon, mais privilégié vous le feriez probablement.

+0

Corrigez-moi si je me trompe, mais ce modèle ne permet pas les membres privés. Ou est-ce? Si c'est le cas; pourriez-vous me donner un exemple? – roosteronacid

+0

Javascript ne permet pas vraiment les membres privés. Vous pouvez émuler la confidentialité des membres en les fermant, ce qui signifie mettre des membres privés dans le constructeur, ce qui signifie que les fonctions ayant besoin d'y accéder ne peuvent pas être des prototypes. Donc, la réponse courte est "sortof". – Grank

+0

C'est ce que je pensais. Donc, la réponse courte est "non" alors? :) – roosteronacid