Показать сообщение отдельно
  #7 (permalink)  
Старый 04.11.2014, 08:04
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,491

Так:
function Test( ){
    var _prop,
        _method = function( ){
            // ...
        };

    this.publicMethod = function( n ){
        return _method( _prop ) + n;
    }

}
делать не стоит, ибо все эти методы и свойства будут свои(дублированы) в каждом экземпляре.
Делается всё через прототипы. В js нет специальных приватных методов и свойств, есть соглашение использовать _ перед названием.
function Test( ){
    this.instanceFoo = 'bar';
}
Test.prototype = {
    publicMethod:function( n ){
        return this._method( this._prop ) + n;
    },
    _prop:'prop',
    _method:function( ){
        // ...
    }
}
однако такие методы всё равно доступны извне.
Можно имитировать действительно приватную область через замыкание:
Test = (function(){
    var  _prop = 'prop',
        _method = function( ){
            // ...
        };

    function Test(){
        this.instanceFoo = 'bar';
    }
    
    Test.prototype = {
        publicMethod: function( n ){
            return _method( _prop ) + n;
        }
    }

    return Test
}());
тогда "приватные" функции действительно не будут доступны извне. Подвох тут в том, что "приватные" функции вообще никаким образом не будут доступны извне, т.е. в таком случае уже не получится впоследствии расширить "класс", ибо новые методы никак не смогут получить доступ к изначальной области видимости.
Какой подход выбирать - смотреть вам.
__________________
29375, 35

Последний раз редактировалось Aetae, 04.11.2014 в 08:07.
Ответить с цитированием