Так:
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
}());
тогда "приватные" функции действительно не будут доступны извне. Подвох тут в том, что "приватные" функции вообще никаким образом не будут доступны извне, т.е. в таком случае уже не получится впоследствии расширить "класс", ибо новые методы никак не смогут получить доступ к изначальной области видимости.
Какой подход выбирать - смотреть вам.