English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
本文详细介绍了JavaScript中的块级作用域、私有变量与模块模式,废话就不多说了,具体如下:
1. Блочная область видимости (частный контекст)Часто используется вне функций в глобальном контексте, чтобы ограничить добавление слишком большого количества переменных и функций в глобальный контекст.
(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. Частные переменные:Любая переменная, определенная в функции, может считаться частной, так как к этим переменным нельзя получить доступ извне функции.
Привилегированные методы: Общедоступные методы, которые имеют доступ к частным переменным и функциям.
2.1) Определение привилегированных методов в конструкторе:
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
Недостатком шаблона конструктора является то, что для каждого экземпляра создается одно и то же множество новых методов.
2.2) Статические частные переменные для реализации привилегированных методов
В частном контексте сначала определяются частные переменные и функции, затем определяются конструктор и его общие методы.
(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. Шаблонный режим:Усиление单体 с помощью добавления частных переменных и特权 методов.
Если необходимо создать объект и инициализировать его некоторыми данными, а также公开 методы для доступа к этим частным данным, можно использовать шаблонный模式.
var application=function(){ //Частные переменные и функции var components=[]; //Инициализация components.push(new BaseComponent()); //Общедоступный интерфейс return { getComponentCount:function(){ return components.length; }, registerComponent:function(){ if(typeof component=="object"){ components.push(component); }; }; }; };
Вот весь контент этой статьи, надеюсь, он поможет вам в изучении. также希望大家多多支持呐喊教程。
Заявление: содержание этой статьи взято из Интернета, авторские права принадлежат их владельцам, контент был自发но предложен пользователями Интернета и загружен самостоятельно, сайт не обладает правами собственности, не был редактирован вручную и не несет ответственности за связанные с этим юридические последствия. Если вы обнаружите подозрительное нарушение авторских прав, пожалуйста, отправьте письмо по адресу: notice#oldtoolbag.com (при отправке письма замените # на @) для отчета и предоставьте соответствующие доказательства. При подтверждении факта нарушения авторских прав сайт немедленно удалит подозрительное侵权内容.