Maison > Article > interface Web > Compréhension approfondie de la portée au niveau du bloc, des variables privées et du mode module en JavaScript (tutoriel graphique)
Cet article présente en détail la portée au niveau du bloc, les variables privées et le mode module en JavaScript, ce qui est très utile pour apprendre JavaScript.
Cet article présente en détail la portée au niveau du bloc, les variables privées et le mode module en JavaScript. Je n'entrerai pas dans trop de bêtises. Les détails sont les suivants :
1. Portée au niveau du bloc (portée privée), est souvent utilisée en dehors des fonctions dans la portée globale, limitant ainsi l'ajout d'un trop grand nombre de variables et de fonctions à la portée globale.
(function(count){ for(var i=0;i<count;i++){ console.log(i);//=>0、1、2、3、4 } console.log(i);//=>5 })(5);
(function(){ var now=new Date(); if(now.getMonth()==0 && now.getDate()==1){ console.log("新年快乐"); }else{ console.log("尽情期待"); } })();
2. Variables privées : Toute variable définie dans une fonction peut être considérée comme une variable privée, car ces variables ne sont pas accessibles en dehors de la fonction.
Méthodes privilégiées : les méthodes publiques qui ont accès aux variables privées et aux fonctions privées sont appelées méthodes privilégiées.
2.1) Définir des méthodes privilégiées dans le constructeur :
function Person(name){ this.getName=function(){ return name; }; this.setName=function(value){ name=value; }; } var person1=new Person("Jason"); console.log(person1.getName());//=>Jason person1.setName("gray"); console.log(person1.getName());//=>gray var person2=new Person("Michael"); console.log(person1.getName());//=>gray console.log(person2.getName());//=>Michael person2.setName('Alex'); console.log(person1.getName());//=>gray console.log(person2.getName());//=>Alex
L'inconvénient du modèle de constructeur est que le même ensemble de nouvelles méthodes sera créé pour chaque instance .
2.2) Variables privées statiques pour implémenter des méthodes privilégiées
Dans la portée privée, définissez d'abord les variables privées et les fonctions privées, puis définissez le constructeur et ses méthodes publiques.
(function(){ //私有变量和函数 var name=""; Person=function(value){ name=value; }; //特权方法 Person.prototype.getName=function(){ return name; }; Person.prototype.setName=function(value){ name=value; } })(); var person1=new Person("Jason"); console.log(person1.getName());//=>Jason person1.setName("gray"); console.log(person1.getName());//=>gray var person2=new Person("Michael"); console.log(person1.getName());//=>Michael console.log(person2.getName());//=>Michael person2.setName('Alex'); console.log(person1.getName());//=>Alex console.log(person2.getName());//=>Alex
3. Modèle de module : Les singletons peuvent être améliorés en ajoutant des variables privées et des méthodes privilégiées.
Si vous devez créer un objet et l'initialiser avec certaines données, tout en exposant également certaines méthodes pouvant accéder à ces données privées, alors vous pouvez utiliser le modèle de module.
var application=function(){ //私有变量和函数 var components=[]; //初始化 components.push(new BaseComponent()); //公共接口 return { getComponentCount:function(){ return components.length; }, registerComponent:function(){ if(typeof component=="object"){ components.push(component); } } } }();
J'ai compilé ce qui précède pour vous, j'espère que cela vous sera utile à l'avenir.
Articles associés :
jsInstance du code exécutant une fonction après un certain délai
JS implémente simplement une fenêtre flottante
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!