Privaatheid in ou styl in OOP in JavaScript
Verklaring van private eienskappe en metodes
deur die simbool # het heeltemal onlangs
in JavaScript verskyn. Voor dit moes ons
'n spesiale, slim truuk gebruik.
Die kern van hierdie truuk is dat daar 'n ooreenkoms aangegaan word dat die name van private eienskappe en metodes met die onderstreep-simbool moet begin. In werklikheid sal sulke name nie privaat wees nie, maar ons kom ooreen dat ons hulle nie van buite die klas sal gebruik nie.
Kom ons probeer. Laat ons 'n private eienskap in hierdie styl maak:
class User {
constructor(name) {
this._name = name;
}
show() {
return this._name;
}
}
Laat ons 'n objek van die klas skep:
let user = new User('john', 'smit');
Laat ons die metode roep wat die waarde van ons eienskap uitstuur:
console.log(user.show());
'n Poging om van buite die klas na die eienskap te verwys sal nie 'n fout veroorsaak nie:
console.log(user._name); // geen fout nie
Maak die eienskappe in die volgende kode privaat:
class Employee {
constructor(name, salary) {
this.name = name;
this.salary = salary;
}
getName() {
return this.name;
}
getSalary() {
return this.salary;
}
}
Maak die hulpmethode in die volgende kode privaat:
class Employee {
constructor(name, salary) {
this.name = name;
this.salary = salary;
}
getSalary() {
return this.addSign(this.salary);
}
addSign(num) {
return num + '
;
}
}