English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Глубокое понимание блокового уровня действия, частных переменных и модульного шаблона в JavaScript

本文详细介绍了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 (при отправке письма замените # на @) для отчета и предоставьте соответствующие доказательства. При подтверждении факта нарушения авторских прав сайт немедленно удалит подозрительное侵权内容.

Вам может понравиться