დაცული მეთოდები OOP-ში JavaScript-ში
პრივატური მეთოდები არ გამოიყენება მემკვიდრეობით და არ ჩანს კლასის გარეთ. თუმცა, ზოგჯერ საჭიროა მეთოდები, რომლებიც მემკვიდრეობით მიიღება, მაგრამ არ ჩანს კლასის გარეთ. ასეთ მეთოდებს ქვიათ დაცული (protected). JavaScript-ს, სამწუხაროდ, არ გააჩნია ასეთი მეთოდების მხარდაჭერა.
ამიტომ მე ვთავაზობ, შემოვიტანოთ გარკვეული შეთანხმება, რომელიც საშუალებას მოგვცემს შევქმნათ ასეთი მეთოდები. ჩვენ ასეთი მეთოდების სახელებს დავიწყებთ underscore-ით. პრაქტიკულად ჩვენ ვიყენებთ ძველ, საყოველთაოდ მიღებულ შეთანხმებას პრივატურ მეთოდებზე. მხოლოდ ასეთ მეთოდებს დაცულს ვუწოდებთ იმ ნიშნად, რომ ისინი მემკვიდრეობით მიიღება, მაგრამ ჩვენ არ ვიყენებთ მათ გარედან. თუმცა, ზუსტად ასე მათ იყენებდნენ ძველი შეთანხმების მიხედვით.
მოდით, დავწეროთ მშობელი კლასი დაცული მეთოდით:
class User {
setName(name) {
this.name = name;
}
getName() {
return this._capeFirst(this.name);
}
_capeFirst(str) {
return str[0].toUpperCase() + str.slice(1);
}
}
გამოვიყენოთ ეს დაცული მეთოდი შვილობილ კლასში:
class Student extends User {
setSurn(surn) {
this.surn = surn;
}
getSurn() {
return this._capeFirst(this.surn);
}
}
შემდეგ კოდში გახსენით დამხმარე მეთოდი დაცულად:
class User {
setName(name) {
if (this.notEmpty(name)) {
this.name = name;
}
}
getName() {
return this.name;
}
notEmpty(str) {
return str.length > 0;
}
}
class Employee extends User {
setSurn(surn) {
if (this.notEmpty(surn)) {
this.surn = surn;
}
}
getSurn() {
return this.surn;
}
}