← FuncionesJS | Classes i objectes | ClasesJS → |
a Dins dels llenguatges actuals, que provenen majoritàriament dels primers llenguatges estructurats com ALGOL o BCPL, la capacitat de crear funcions per reutilitzar de diverses formes, ja sigui dins d’ell mateix mòdul de el programa o en diferents mòduls, ha estat un dels fonaments de la programació de sistemes informàtics. No obstant això, aquest paradigma es quedava curt per a noves situacions que anaven sorgint amb el temps, com la programació de videojocs o el 3D i la intel·ligència artificial. A la fi dels anys 70 es va començar a teoritzar sobre llenguatges de programació que utilitzessin entitats independents que fossin autocontenidas per realitzar les aplicacions. Com ja vam dir anteriorment, un programa es compon de codi i dades. els objectes són unitats que contenen el seu propi codi i dades per al seu propi acte-funcionament. Podem dir que són programes dins de programes.
Dit així, podem adonar-nos que els objectes poden ser utilitzats com a variables, per al nostre propi ús. Però no podem definir variables d’objecte sense poder donar-los una forma. La forma dels objectes són les dades (propietats) i codi (funcions) que conté l’objecte. A això se li denomina classe d’objecte. Per definir classes en JavaScript, ho fem per mitjà de funcions, com aquesta:
function Persona(nombre) { this.nombre = nombre; this.color_pelo = 'negro'; this.peso = 75; this.altura = 165; this.sexo = 'varón'; this.edad= 26; }
Anem a fixar-nos bé com s’estructura aquesta funció. Se li crida constructor de la classe, i en ella definim les dades de la classe, els que anem a poder utilitzar a l’crear objectes amb ella. Cal notar l’ús de la paraula reservada this. Aquesta paraula serveix per identificar l’objecte en si mateix dins de la definició de la classe. Quan escrivim
this.peso = 75;
estem creant la propietat “pes” de la classe “Persona”. Quan vam crear una propietat en el constructor i li donem un valor, com en aquest cas, estem assignant-li un valor per defecte. Tots els objectes creats amb aquest constructor de contenir una propietat “pes” amb aquest valor inicial, encara que després podrem canviar-ho a l’usar l’objecte. Per definir un objecte d’aquesta classe, només hauríem de fer això:
var hombre = new Persona('Pepe');
Aquí hem definit l’objecte “home”, que contindrà totes les propietats definides en la funció-classe “Persona”. Si volem canviar el seu valor, només hem de fer alguna cosa com això:
hombre.peso = 80;
D’aquesta manera, la dada definit per a aquest objecte canvia. Però si hem definit més objectes de tipus Persona, cadascun d’ells contindrà les mateixes propietats però amb valors diferents. Cap objecte té el mateix valor que un altre objecte de la mateixa classe tret que nosaltres li assignem explícitament.
var mujer = new Persona('Ana'); mujer.peso = 67; mujer.sexo = 'mujer';
En aquest cas hem fet el mateix, però li vam indicar el seu propi pes, independent del de la variable “home”. Així, podem tenir tants objectes de la mateixa classe com vulguem per a realitzar les operacions que siguin pertinents. Una última cosa sobre els constructors: com podem veure, podem passar-li paràmetres, que podem convertir en els valors de les propietats dels objectes d’aquesta classe.