Euh... si, c'est même comme ça qu'il est défini.
En JavaScript, non seulement tout est objet, mais aussi tout possède un prototype. Ensuite, en fonction de ce que l'on fait, il est possible, à l'instar de Mr Jourdain, de faire de l'OO sans le savoir (puisque souvent, on utilise majoritairement des prototypes natifs de JavaScript : String, Number, Function, etc.) mais c'est surtout l'approche procédurale qui n'existe pas à proprement parler en JavaScript.
Et du coup, je trouve que vouloir reproduire en JavaScript le comportement d'un langage OO par classes est aller à l'encontre de la nature du langage et me semble assez maladroit en général. D'autant que de mémoire, je ne me souviens pas d'un cas où cela m'aurait réellement été utile.
Ensuite, oui, il est possible de "simuler" des propriétés et méthodes privées et publiques (voire protégées).
Quant à l'héritage, il se fait simplement par le prototype :
1 2 3 4
| var MaPseudoClasse = function(){};
MaPseudoClasse.prototype = String.prototype;
var toto = new MaPseudoClasse();
alert(toto.toUpperCase); |
Partager