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