Свойства и методы в 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" запрещено!