जावास्क्रिप्ट में ओओपी में संरक्षित विधियाँ
निजी विधियाँ उत्तराधिकार में नहीं मिलती हैं और कक्षा के बाहर दिखाई नहीं देती हैं। हालांकि, कभी-कभी ऐसी विधियों की आवश्यकता होती है, जो उत्तराधिकार में मिलती हैं, लेकिन कक्षा के बाहर दिखाई नहीं देती हैं। ऐसी विधियों को संरक्षित (protected) कहा जाता है। दुर्भाग्य से, जावास्क्रिप्ट ऐसी विधियों का समर्थन नहीं करता है।
इसलिए, मैं एक समझौता प्रस्तावित करता हूं, जो ऐसी विधियाँ बनाने की अनुमति देता है। हम ऐसी विधियों के नाम अंडरस्कोर से शुरू करेंगे। वास्तव में हम निजी विधियों के बारे में पुराने सामान्य समझौते का उपयोग कर रहे हैं। केवल ऐसी विधियों को संरक्षित कहते हैं इस संकेत के रूप में कि वे उत्तराधिकार में मिलती हैं, लेकिन हम उनका उपयोग बाहर से नहीं करेंगे। हालांकि, पुराने समझौते के अनुसार वे वास्तव में इसी तरह लागू होते हैं।
तो, आइए एक संरक्षित विधि वाला एक मूल कक्षा लिखें:
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;
}
}