Je comprends le code JavaScript de base des pseudo-classes:
function Foo(bar) {
this._bar = bar;
}
Foo.prototype.getBar = function() {
return this._bar;
};
var foo = new Foo('bar');
alert(foo.getBar()); // 'bar'
alert(foo._bar); // 'bar'
Je comprends également que le motif de module, qui peut émuler l'encapsulation:
var Foo = (function() {
var _bar;
return {
getBar: function() {
return _bar;
},
setBar: function(bar) {
_bar = bar;
}
};
})();
Foo.setBar('bar');
alert(Foo.getBar()); // 'bar'
alert(Foo._bar); // undefined
Mais il y a de l'onu-programmation orientée objet-comme les propriétés de ces deux modèles. Le premier n'a pas de fournir de l'encapsulation. Ce dernier ne fournit pas d'instanciation. Les deux modèles peuvent être modifiés à l'appui de pseudo-héritage.
Ce que je voudrais savoir c'est si il n'y a aucun motif qui permet de:
- L'héritage
- L'Encapsulation (soutien pour le "privé" propriétés/méthodes)
- L'instanciation (peut avoir plusieurs instances de la "classe", chacun avec son propre état)