Lors de l'utilisation de symboles (fonctions, des constantes, des variables globales) définies dans d'autres fichiers JavaScript, je passe pour le fichier en cours de la "portée de la fonction" (de haut niveau, généralement anonymes, fonction qui empêche l'espace de noms global de la pollution) comme paramètres:
Comme vous pouvez le voir dans la capture d'écran, ReSharper (6.0.2202.688) est heureux avec jQuery
, ContainerA
et ContainerB
, même si elles ne sont pas définies de n'importe où dans le fichier actuel. Le commentaire de la ligne 1 n'est là que pour JSLint (pas d'erreurs).
Cette technique suppose que tous les autres fichiers JavaScript suivre le JavaScript meilleures pratiques de peu de polluer l'espace de noms global par la définition d'un unique objet de niveau supérieur qui contient tous les éléments exportés (public) symboles (c - jQuery
est le seul objet global pour la bibliothèque jQuery et ses plugins, ContainerA
est le seul objet global pour LibraryA, ContainerB
est le seul objet global pour LibraryB, etc).
Parce que de toute évidence, vous n'avez pas de contrôle sur ASP.NET Web Méthodes de génération de fonctions constructeur dans l'espace de noms global, dans votre cas, vous devez recourir à l'ultime conteneur, window
:
C'est une légère variante de la technique proposée par @sethobrien dans son commentaire. Un important (à mon humble avis) l'avantage est que vous n'êtes pas coder en dur window.X
dans votre code. Au lieu de cela, votre code est l'instanciation de classes à partir de l' aspNet
conteneur (qui pour le moment se trouve être un synonyme window
, mais cela pourrait changer dans l'avenir). Aussi, ayant aspNet.X
dans le code déclare votre intention plus clair pour les gens qui vont lire votre code dans l'avenir. Enfin, les variables locales peuvent être raccourcies par JavaScript minimizers rendement légèrement plus petit fichier transmis aux navigateurs clients.