Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 17.07.2013, 14:02
Аспирант
Отправить личное сообщение для _axl Посмотреть профиль Найти все сообщения от _axl
 
Регистрация: 21.07.2009
Сообщений: 39

Публичные методы класса
Прочитал несколько статей по организации js кода в модули, советуют публичные методы оформлять так:
var revealingModulePattern = function(){
  var privateVar = 1;
  function privateFunction(){
    alert('private');
  };
  var publicVar = 2;
  function publicFunction(){
    anotherPublicFunction();    
  };
  function anotherPublicFunction(){
    privateFunction();
  };
  // reveal all things private by assigning public pointers
  return {
    init:publicFunction,
    count:publicVar,
    increase:anotherPublicFunction
  }
}();

или через prototype.
Я раньше использовал просто объявление с this. т.е.
this.method1 = function(){}
и т.п. В чем минус этого подхода?
Ответить с цитированием
  #2 (permalink)  
Старый 17.07.2013, 14:15
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

Сообщение от _axl
В чем минус этого подхода?
var Ololo = function() {
    function hehe() {
    }
    return {
        ooops: hehe
    }
}
var instance = new Ololo;
alert(instance instanceof Ololo); // false

// --------------------------------------

var Ololo2 = function() {
    this.ooops = function () {
    }
}
var instance = new Ololo2;
alert(instance instanceof Ololo2); // true

// --------------------------------------

var Ololo3 = function() {
}
Ololo3.prototype.ooops = function () {}
var instance = new Ololo3;
alert(instance instanceof Ololo3); // true
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine
Ответить с цитированием
  #3 (permalink)  
Старый 17.07.2013, 16:28
Аспирант
Отправить личное сообщение для _axl Посмотреть профиль Найти все сообщения от _axl
 
Регистрация: 21.07.2009
Сообщений: 39

Не смог придумать, что в практическом плане дают такие особенности. Понятно, что можно сделать класс свойством которого может быть только экземпляр Ololo2 или 3 и для этого делать проверку, как в примере, а что еще?
ВОпрос вызван тем, что по-моему вариант с this проще или по крайней мере читабельнее. Но по какой-то причине же прибегают в такому усложнению, зачем?
Ответить с цитированием
  #4 (permalink)  
Старый 17.07.2013, 16:31
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

Сообщение от _axl
Ololo2 или 3 и для этого делать проверку, как в примере, а что еще?
очень жаль что ты понимаешь это лишь так, хотя тут совершенно дело не в проверке. А в иерархии объектов
Сообщение от _axl
Но по какой-то причине же прибегают в такому усложнению, зачем?
JavaScript довольно гибкий язык, и в нем можно творить что угодно и как угодно. А стильно того кто как пишет не важен, главное что бы в конечном итоге был удовлетворительный результат.
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine
Ответить с цитированием
  #5 (permalink)  
Старый 17.07.2013, 17:32
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

var C = (function(){
    function privateMethod() {};
    var C = function(){};
    C.prototype.publicMethod = function() {};
    return C;
})();

var instance = new C();
alert(instance instanceof C);
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Использование классов в JavaScript devote Ваши сайты и скрипты 70 01.02.2013 17:17
Доступ к объекту класса kelj Общие вопросы Javascript 2 01.06.2012 22:58
Удаление класса при клике на объект lukingnu jQuery 3 23.04.2012 12:14
Свойства/методы класса TicTac Общие вопросы Javascript 5 03.07.2011 14:53
Как изменить свойство css у всех элементов одного класса AlexJ Events/DOM/Window 7 19.03.2011 06:25