Свойства и методы в JavaScript
В JavaScript нет нет специальных средств для объявления общедоступных (public), приватных (private) или защищенных (protected) свойств и методов, как в других языках. Для этого используются специальные методы.
var MyObj = function() {
// Приватные свойства и методы
// Функция образовывает замыкание, поэтому переменные видны внутри функции,
// но не видны за ее пределами
// Функция не должна возвращать ссылки приватные на объекты и массивы,
// иначе они могут быть изменены
// Приватные переменные не будут видны из прототипа
var privateProperty = 'Private';
var privateMethod = function() { // var можно упустить
return privateProperty;
};
console.log(privateMethod()); // Private
// Общедоступные свойства и методы
// По умолчанию все свойства и методы объекта общедоступные
this.publicProperty = 'Public';
this.publicMethod = function() {
return this.publicProperty;
}
// Приватные статические свойства (запоминаем в замыкании)
var privateStaticMethod = function() {
var privateStaticProperty = 'Private static';
return function() {
return privateStaticProperty;
}
}();
console.log(privateStaticMethod()); // Private static
}
// Публичные статические свойства и методы
MyObj.publicStaticProperty = 'Public static';
MyObj.publicStaticMethod = function() {
return MyObj.publicStaticProperty;
};
// Тестируем
var myObj = new MyObj();
// Обращение к приватному методу вызовет ошибку
console.log(myObj.privateMethod()); // TypeError: myObj.privateMethod is not a function
console.log(myObj.publicMethod()); // Public
console.log(MyObj.publicStaticMethod()); // Public static
// Статические методы не доступны по умолчанию в экземплярах классов
console.log(myObj.publicStaticMethod()); // TypeError: myObj.publicStaticMethod is not a function
MyObj.prototype.publicStaticMethod = MyObj.publicStaticMethod;
console.log(myObj.publicStaticMethod()); // Public static
Автор: http://www.nika.org.ua
Дата: 12.05.14
Копирование материалов без указания "Автор: http://www.nika.org.ua" запрещено!
