Придумал небольшую штуку:
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, я же как стереотипный человек тоже немного избегаю его, но ....