Récemment, en refactorisant des choses, je suis tombé sur des paramètres d'espace de noms, j'ai recherché des connaissances, consulté des experts et noté ma propre expérience
Je pense que tout le monde sait que la fenêtre est de premier ordre, donc je n'écrirai pas sur fenêtre ici. D'accord, ignorez
1 : À propos du niveau supérieur
var ns = ns || {};
Comme vous pouvez le voir, en effet, s'il s'avère qu'un tel objet n'existe pas, new Object( ) sera automatiquement créé ; s’il y en a, alors cet objet sera utilisé directement, il ne sera donc pas couvert.
2 : Le deuxième niveau, bien sûr, vous pouvez également créer le deuxième niveau sous le niveau supérieur ns, c'est-à-dire
ns.ModuleClass = {};
Comme vous pouvez le constater, une classe est créée sous ns Bien sûr. , vous pouvez également continuer à créer des méthodes dans la classe, c'est-à-dire Voici ceci :
ns.ModuleClass.method1= function() {/ /////;
3 : Comment faire du multi-niveaux, comme ce com.qw. vue, je veux le définir comme espace de noms, cela nécessite chaque Un nom séparé par des points est utilisé pour définir l'espace de noms séparément, et il est défini sur l'objet
Regardons un exemple et définissons-le sous. fenêtre :
espace de noms de fonction (sSpace ) {
var arr = sSpace.split('.'),i = 0,nameI ;
var root = window;
for (; nameI = arr[i ];) {
if (!root[nameI]) {
root[nameI] = {};
}
root = root[nameI];
}
return root;
>
Vous pouvez voir que c'est bien l'idée que j'ai évoquée plus haut, utiliser un parcours et définir toutes les séparations comme objets, afin que chaque séparation puisse être utilisée indépendamment.
4 : Listez les couramment utilisés et quelques conseils pour configurer des espaces de noms simplement et rapidement
if (!window.ns) {
window.ns = {};
}
var ns; if( typeof ns == "undefined"){
ns = {};
if(typeof ns.ClassName == "undefined"){
ns.ClassName = {};
}