Публичные методы класса
Прочитал несколько статей по организации js кода в модули, советуют публичные методы оформлять так:
var revealingModulePattern = function(){
var privateVar = 1;
function privateFunction(){
alert('private');
};
var publicVar = 2;
function publicFunction(){
anotherPublicFunction();
};
function anotherPublicFunction(){
privateFunction();
};
// reveal all things private by assigning public pointers
return {
init:publicFunction,
count:publicVar,
increase:anotherPublicFunction
}
}();
или через prototype. Я раньше использовал просто объявление с this. т.е.
this.method1 = function(){}
и т.п. В чем минус этого подхода? |
Цитата:
var Ololo = function() {
function hehe() {
}
return {
ooops: hehe
}
}
var instance = new Ololo;
alert(instance instanceof Ololo); // false
// --------------------------------------
var Ololo2 = function() {
this.ooops = function () {
}
}
var instance = new Ololo2;
alert(instance instanceof Ololo2); // true
// --------------------------------------
var Ololo3 = function() {
}
Ololo3.prototype.ooops = function () {}
var instance = new Ololo3;
alert(instance instanceof Ololo3); // true
|
Не смог придумать, что в практическом плане дают такие особенности. Понятно, что можно сделать класс свойством которого может быть только экземпляр Ololo2 или 3 и для этого делать проверку, как в примере, а что еще?
ВОпрос вызван тем, что по-моему вариант с this проще или по крайней мере читабельнее. Но по какой-то причине же прибегают в такому усложнению, зачем? |
Цитата:
Цитата:
|
var C = (function(){
function privateMethod() {};
var C = function(){};
C.prototype.publicMethod = function() {};
return C;
})();
var instance = new C();
alert(instance instanceof C);
|
| Часовой пояс GMT +3, время: 06:15. |