Переменные Private, Public и Static
Способ определения переменных в объекте определяет, какие методы этого объекта можно использовать для доступа к этим переменным. В JavaScript при работе с объектно-ориентированным кодом используется пять уровней методов и свойств.
- Скрытая (Private) - объявляется с помощью 'var variableName' или 'function functionName' внутри объекта. Могут быть доступны только другим скрытым или привилегированным функциям.
- Открытая (Public) - объявляется с помощью 'this.variableName' внутри объекта. Может изменяться любой функцией или методом.
- Привилегированная (Privileged) - объявляется с помощью 'this.functionName = function(){ ... }' внутри объекта. Доступна для любой функции или метода и может обращаться или изменять любую скрытую переменную.
- Прототипированная (Prototype) - объявляется с помощью 'Class.prototype.variableName' или 'Class.prototype.functionName'. Объявленные таким образом функции будут иметь доступ к любой открытой или прототипированной функции. Попытки изменить созданную таким образом переменную будут вместо этого создавать новую открытую переменную на объекте, а прототипированная переменная будет недоступна.
- Статическая (Static) - объявляется с помощью 'Class.variableName' или 'Class.functionName'. Может изменяться любой функцией или методом. Такой метод используется редко.
Чтобы понять различия между уровнями, давайте рассмотрим пример:
function Cat(name, color){ /* Конструктор: при создании объекта выполняется любой находящийся здесь код */ Cat.cats++;
/* Скрытые переменные и функции доступны только скрытым или привилегированным функциям. Отметим, что 'name' и 'color', переданные в Class, уже являются скрытыми переменными. */
var age = 0; var legs = 4; function growOlder(){ age++; }
/* Открытые переменные доступны открыто или скрыто */
this.weight = 1; this.length = 5;
/* Привилегированные функции доступны открыто или скрыто. Могут обращаться к скрытым переменным.
Невозможно изменить, можно только заменить открытой версией */
this.age = function(){ if(age==0) this.length+=20;
Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий