⊗jsOpAdCL 41 of 60 menu

Humbja e Kontekstit në OOP në JavaScript

Gjatë punës me klasa, konteksti mund të humbasë dhe this do të tregojë jo te objekti i klasës, por diçka tjetër. Le të shohim se si mund të ndodhë kjo dhe çfarë të bëjmë me të.

Le të themi se kemi një klasë User, që përmban emrin e përdoruesit dhe një array të qyteteve ku ky përdorues ka qenë:

class User { constructor(name, cities) { this.name = name; this.cities = cities; } }

Le të themi se ekziston një metodë që nxjerr qytetet:

class User { constructor(name, cities) { this.name = name; this.cities = cities; } showCities() { this.cities.forEach(function(city) { console.log(city); }); } }

Le të themi se në këtë metodë kemi vendosur të përdorim disa metoda ndihmëse të klasës. Në këtë rast, konteksti do të humbasë:

class User { constructor(name, cities) { this.name = name; this.cities = cities; } showCities() { this.cities.forEach(function(city) { console.log(this.#cape(city)); // konteksti u humb }); } #cape(str) { return str[0].toUpperCase() + str.slice(1); } }

Problemi mund të korrigjohet, për shembull, duke futur një funksion shigjete:

class User { constructor(name, cities) { this.name = name; this.cities = cities; } showCities() { this.cities.forEach(city => { console.log(this.#cape(city)); }); } #cape(str) { return str[0].toUpperCase() + str.slice(1); } }

Korrigjoni gabimin e bërë në kodin e mëposhtëm:

class Employee { constructor(name, salary, coeffs) { this.name = name; this.salary = salary; this.coeffs = coeffs; } getTotal() { return this.coeffs.reduce(function(res, coeff) { return res + this.salary * coeff; }, 0); } } let employee = new Employee('john', 1000, [1.1, 1.2, 1.3]); let total = employee.getTotal(); console.log(total);
Shqip
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Ne përdorim cookie për funksionimin e sajtit, analizën dhe personalizimin. Përpunimi i të dhënave bëhet në përputhje me Politikën e Privatësisë.
prano të gjitha konfiguro refuzo