Introducció
En aquest tema, explorarem els mètodes d'objecte i la paraula clau this
en JavaScript. Els mètodes són funcions que es defineixen dins d'un objecte i poden accedir a les propietats de l'objecte mitjançant la paraula clau this
.
Objectius
- Entendre què són els mètodes d'objecte.
- Aprendre a definir i utilitzar mètodes dins d'un objecte.
- Comprendre el comportament de la paraula clau
this
dins dels mètodes.
Conceptes Clau
Què són els Mètodes d'Objecte?
Els mètodes d'objecte són funcions que es defineixen com a propietats d'un objecte. Aquests mètodes poden accedir i manipular altres propietats de l'objecte.
La Paraula Clau this
La paraula clau this
fa referència a l'objecte des del qual es crida el mètode. És una manera de referir-se a l'objecte actual dins del mètode.
Exemples Pràctics
Definició d'un Mètode d'Objecte
let persona = { nom: "Joan", edat: 30, saluda: function() { console.log("Hola, em dic " + this.nom + " i tinc " + this.edat + " anys."); } }; persona.saluda(); // Sortida: Hola, em dic Joan i tinc 30 anys.
Explicació
- Objecte
persona
: Té propietatsnom
iedat
. - Mètode
saluda
: És una funció que utilitzathis
per accedir a les propietatsnom
iedat
de l'objectepersona
.
La Paraula Clau this
en Funcions Fletxa
Les funcions fletxa (arrow functions
) no tenen el seu propi valor de this
. En canvi, hereten el valor de this
del seu context de definició.
let persona = { nom: "Joan", edat: 30, saluda: () => { console.log("Hola, em dic " + this.nom + " i tinc " + this.edat + " anys."); } }; persona.saluda(); // Sortida: Hola, em dic undefined i tinc undefined anys.
Explicació
- Funció Fletxa
saluda
: No té el seu propithis
, per tant,this.nom
ithis.edat
sónundefined
.
Solució amb Funció Normal
Per evitar aquest problema, utilitzem funcions normals per als mètodes d'objecte.
let persona = { nom: "Joan", edat: 30, saluda: function() { console.log("Hola, em dic " + this.nom + " i tinc " + this.edat + " anys."); } }; persona.saluda(); // Sortida: Hola, em dic Joan i tinc 30 anys.
Exercicis Pràctics
Exercici 1: Crear un Objecte amb Mètodes
Crea un objecte cotxe
amb les propietats marca
, model
i any
. Afegeix un mètode descripcio
que imprimeixi una descripció del cotxe utilitzant this
.
Solució
let cotxe = { marca: "Toyota", model: "Corolla", any: 2020, descripcio: function() { console.log("Aquest cotxe és un " + this.marca + " " + this.model + " de l'any " + this.any + "."); } }; cotxe.descripcio(); // Sortida: Aquest cotxe és un Toyota Corolla de l'any 2020.
Exercici 2: Utilitzar Funcions Fletxa i this
Modifica el mètode descripcio
de l'objecte cotxe
per utilitzar una funció fletxa. Observa què passa amb el valor de this
.
let cotxe = { marca: "Toyota", model: "Corolla", any: 2020, descripcio: () => { console.log("Aquest cotxe és un " + this.marca + " " + this.model + " de l'any " + this.any + "."); } }; cotxe.descripcio(); // Quina és la sortida?
Solució
let cotxe = { marca: "Toyota", model: "Corolla", any: 2020, descripcio: () => { console.log("Aquest cotxe és un " + this.marca + " " + this.model + " de l'any " + this.any + "."); } }; cotxe.descripcio(); // Sortida: Aquest cotxe és un undefined undefined de l'any undefined.
Retroalimentació sobre Errors Comuns
- Error Comú 1: Utilitzar funcions fletxa per a mètodes d'objecte, el que resulta en
this
indefinit. - Error Comú 2: Oblidar-se de fer servir
this
per accedir a les propietats de l'objecte dins d'un mètode.
Resum
En aquesta secció, hem après sobre els mètodes d'objecte i la paraula clau this
en JavaScript. Hem vist com definir mètodes dins d'un objecte i com utilitzar this
per accedir a les propietats de l'objecte. També hem explorat el comportament de this
en funcions fletxa i hem practicat amb exercicis per reforçar aquests conceptes.
En el següent tema, explorarem els arrays: conceptes bàsics i mètodes.
JavaScript: De Principiant a Avançat
Mòdul 1: Introducció a JavaScript
- Què és JavaScript?
- Configuració del Teu Entorn de Desenvolupament
- El Teu Primer Programa en JavaScript
- Sintaxi i Conceptes Bàsics de JavaScript
- Variables i Tipus de Dades
- Operadors Bàsics
Mòdul 2: Estructures de Control
- Declaracions Condicionals
- Bucles: for, while, do-while
- Declaracions Switch
- Gestió d'Errors amb try-catch
Mòdul 3: Funcions
- Definició i Crida de Funcions
- Expressions de Funció i Funcions Fletxa
- Paràmetres i Valors de Retorn
- Àmbit i Tancaments
- Funcions d'Ordre Superior
Mòdul 4: Objectes i Arrays
- Introducció als Objectes
- Mètodes d'Objecte i Paraula Clau 'this'
- Arrays: Conceptes Bàsics i Mètodes
- Iteració sobre Arrays
- Desestructuració d'Arrays
Mòdul 5: Objectes i Funcions Avançades
- Prototips i Herència
- Classes i Programació Orientada a Objectes
- Mòduls i Importació/Exportació
- JavaScript Asíncron: Callbacks
- Promeses i Async/Await
Mòdul 6: El Model d'Objectes del Document (DOM)
- Introducció al DOM
- Selecció i Manipulació d'Elements del DOM
- Gestió d'Esdeveniments
- Creació i Eliminació d'Elements del DOM
- Gestió i Validació de Formularis
Mòdul 7: APIs del Navegador i Temes Avançats
- Emmagatzematge Local i de Sessió
- Fetch API i AJAX
- WebSockets
- Service Workers i Aplicacions Web Progressives (PWAs)
- Introducció a WebAssembly
Mòdul 8: Proves i Depuració
- Depuració de JavaScript
- Proves Unitàries amb Jest
- Proves d'Integració
- Proves de Cap a Cap amb Cypress
Mòdul 9: Rendiment i Optimització
- Optimització del Rendiment de JavaScript
- Gestió de Memòria
- Manipulació Eficient del DOM
- Càrrega Per Mandat i Divisió de Codi
Mòdul 10: Frameworks i Llibreries de JavaScript
- Introducció a React
- Gestió d'Estat amb Redux
- Conceptes Bàsics de Vue.js
- Conceptes Bàsics d'Angular
- Triar el Framework Adequat