Показать сообщение отдельно
  #26 (permalink)  
Старый 19.04.2013, 16:54
Аватар для Dim@
Профессор
Отправить личное сообщение для Dim@ Посмотреть профиль Найти все сообщения от Dim@
 
Регистрация: 21.04.2012
Сообщений: 951

Придумал небольшую штуку:
var Cat = function ( ) {
    var private_functions = Cat.prototype.private_functions; //Ссылка на объект с функциями
    this.say = function ( ) {
 
    };
    var fun = function ( ) { alert ( "FUN" )};
    this.run = function ( ) {
      with (private_functions) {//загружаем приватные методы
       this.x = 12;//на свойствах объекта созданного через конструктор Cat это не отражается
       func1 ( );//работает
       func2 ( );//работает
       fun ( ); //сработает - я даже не думал, что сработает
      }
    };
}
Cat.prototype.x = 6;//дефолтное значение
Cat.prototype.private_functions = {//объект с функциями
 func1 : function ( ) {
  alert ("Func1");
  },
 func2 : function ( ) {
  alert ("Func2");
  }
};
var cat = new Cat;
alert ( cat.x );//дефолтное значение 6
cat.run ( );//работает
alert ( cat.x );//12

Но с оператором with надо быть осторожным - все переменные обязательно с var, иначе "переменную" сделают св-ом объекта private_functions и многие не любят оператор with, я же как стереотипный человек тоже немного избегаю его, но ....
Ответить с цитированием