Livaanderiamarum,
Это в моем примере он вызывается только при создании сущности, но потом то он тоже будет доступен, но только внутри того scope естественно, в котором он определен. Если вы будете расширять класс public методами "снаружи", то конечно, он доступен не будет.
Сообщение от Livaanderiamarum
|
Но зачем это нужно?
|
Если приватный метод вызывается в единственном месте, то да, возможно стоит задуматься об избавлении от него, ведь лишняя вложенность производительности не добавит, с другой стороны, как правило, метод не просто выполняет какую-то часть кода, а выполняет какую то определенную задачу, и, таким образом, ваш код будет выглядеть опрятнее и будет гораздо гибче.
var AwesomeParser = function () {
AwesomeParser.prototype.init.apply(this, arguments);
}
AwesomeParser.prototype = new function (AwesomeParser) {
/**
* @public @Array parsed
* @description Распарсенная строка
*/
this.parsed = [];
/**
* @public @Fucntion init( @String string ) : @void
* @description Инициализирует инстанс со строкой
*/
this.init = function (string) {
if (typeof string === "string") {
this.parsed = parseString(string);
}
}
this.valueOf = function () {
return prettifyParsed.call(this);
}
/**
* @private @static @RegExp R_DIGIT
*/
var R_DIGIT = /\d+/g;
/**
* @private @static @Function parseString( @String string ) : @Array
* @description Возвращает массив вхождений цифр
*/
var parseString = function (string) {
return string.match(R_DIGIT);
}
/**
* @private @Function prettifyParsed() : @Array
* @descriptoin Преобразует массив строк в массив чисел
*/
var prettifyParsed = function () {
return this.parsed.map(function (strd) {
return +strd;
});
}
}(AwesomeParser);
var parser = new AwesomeParser();
parser.init("1000 и 1 ночь");
alert(parser.valueOf());
Лично мне нравится так программировать (это очень грубый пример, тут можно просто 1 метод написать и все), кому как, зато такой класс легко расширяется, модифицируется и так далее и читать удобно