Privatësia në stilin e vjetër në OOP në JavaScript
Deklarimi i vetive dhe metodave private
përmes simbolit # u shfaq në JavaScript
shumë kohë më parë. Para kësaj duhej
të përdorej një teknikë e veçantë
e ndërlikuar.
Thelbi i kësaj tekike është se lidhet marrëveshja që emrat e vetive private dhe metodave duhet të fillojnë me simbolin e nënvizimit. Realësisht emra të tillë nuk do të jenë privat, por ne biem marrëveshje që të mos i përdorim ato nga jashtë klasës.
Le të provojmë. Le të bëjmë një veti private në këtë stil:
class User {
constructor(name) {
this._name = name;
}
show() {
return this._name;
}
}
Le të krijojmë një objekt të klasës:
let user = new User('john', 'smit');
Le të thërrasim metodën, që shfaq vlerën e vetisë sonë:
console.log(user.show());
Përpjekja për t'iu drejtuar vetisë nga jashtë klasës nuk do të rezultojë në gabim:
console.log(user._name); // nuk ka gabim
Në kodin vijues bëni vetitë private:
class Employee {
constructor(name, salary) {
this._name = name;
this._salary = salary;
}
getName() {
return this._name;
}
getSalary() {
return this._salary;
}
}
Në kodin vijues bëni metodën ndihmëse private:
class Employee {
constructor(name, salary) {
this.name = name;
this.salary = salary;
}
getSalary() {
return this._addSign(this.salary);
}
_addSign(num) {
return num + '€';
}
}