जावास्क्रिप्ट क्लास इनहेरिटेंस
वर्ग वंशानुक्रम
क्लास इनहेरिटेंस बनाने के लिए extends
कीवर्ड का उपयोग करें।
क्लास इनहेरिटेंस के साथ बनाया गया एक क्लास दूसरे क्लास से सभी मेथड इनहेरिट करता है:
उदाहरण
"मॉडल" नामक एक वर्ग बनाएं जो "कार" वर्ग से विधियों को प्राप्त करेगा:
class Car {
constructor(brand) {
this.carname =
brand;
}
present() {
return 'I have a ' + this.carname;
}
}
class Model extends Car {
constructor(brand, mod) {
super(brand);
this.model = mod;
}
show() {
return this.present() + ', it is a ' + this.model;
}
}
let myCar = new Model("Ford", "Mustang");
document.getElementById("demo").innerHTML
= myCar.show();
super()
विधि मूल वर्ग को संदर्भित करती है ।
कंस्ट्रक्टर मेथड में मेथड को कॉल करके super()
, हम पैरेंट की कंस्ट्रक्टर मेथड को कॉल करते हैं और पैरेंट के प्रॉपर्टीज और मेथड्स तक पहुंच प्राप्त करते हैं।
कोड पुन: प्रयोज्य के लिए वंशानुक्रम उपयोगी है: जब आप एक नया वर्ग बनाते हैं तो मौजूदा वर्ग के गुणों और विधियों का पुन: उपयोग करें।
गेटर्स और सेटर्स
कक्षाएं आपको गेटर्स और सेटर्स का उपयोग करने की भी अनुमति देती हैं।
अपनी संपत्तियों के लिए गेटर्स और सेटर्स का उपयोग करना स्मार्ट हो सकता है, खासकर यदि आप उन्हें वापस करने से पहले या उन्हें सेट करने से पहले मूल्य के साथ कुछ विशेष करना चाहते हैं।
कक्षा में गेटर्स और सेटर्स जोड़ने के लिए
get
और set
कीवर्ड का उपयोग करें।
उदाहरण
"कार्नेम" संपत्ति के लिए एक गेट्टर और एक सेटर बनाएं:
class Car {
constructor(brand) {
this.carname
= brand;
}
get cnam() {
return this.carname;
}
set cnam(x) {
this.carname = x;
}
}
let myCar = new Car("Ford");
document.getElementById("demo").innerHTML = myCar.cnam;
नोट: भले ही गेटर एक विधि हो, जब आप संपत्ति मूल्य प्राप्त करना चाहते हैं तो आप कोष्ठक का उपयोग नहीं करते हैं।
इस मामले में गेट्टर/सेटर विधि का नाम संपत्ति के नाम के समान नहीं हो सकता है carname
।
कई प्रोग्रामर _
वास्तविक संपत्ति से गेटर/सेटर को अलग करने के लिए संपत्ति के नाम से पहले अंडरस्कोर वर्ण का उपयोग करते हैं:
उदाहरण
आप वास्तविक संपत्ति से गेटर/सेटर को अलग करने के लिए अंडरस्कोर वर्ण का उपयोग कर सकते हैं:
class Car {
constructor(brand) {
this._carname
= brand;
}
get carname() {
return this._carname;
}
set carname(x) {
this._carname = x;
}
}
let myCar = new Car("Ford");
document.getElementById("demo").innerHTML = myCar.carname;
एक सेटर का उपयोग करने के लिए, उसी सिंटैक्स का उपयोग करें जब आप एक संपत्ति मान सेट करते हैं, बिना कोष्ठक के:
उदाहरण
कारनाम को "वोल्वो" में बदलने के लिए एक सेटर का उपयोग करें:
class Car {
constructor(brand) {
this._carname
= brand;
}
get carname() {
return this._carname;
}
set carname(x) {
this._carname = x;
}
}
let myCar = new Car("Ford");
myCar.carname = "Volvo";
document.getElementById("demo").innerHTML = myCar.carname;
उत्थापन
कार्यों और अन्य जावास्क्रिप्ट घोषणाओं के विपरीत, वर्ग घोषणाएं नहीं फहराई जाती हैं।
इसका मतलब है कि आपको इसका उपयोग करने से पहले एक वर्ग घोषित करना होगा:
उदाहरण
//You cannot use the class yet.
//myCar = new Car("Ford")
//This would
raise an error.
class Car {
constructor(brand) {
this.carname = brand;
}
}
//Now you can use the class:
let myCar = new Car("Ford")
नोट: अन्य घोषणाओं के लिए, कार्यों की तरह, जब आप इसे घोषित करने से पहले इसका उपयोग करने का प्रयास करते हैं तो आपको कोई त्रुटि नहीं मिलेगी, क्योंकि जावास्क्रिप्ट घोषणाओं का डिफ़ॉल्ट व्यवहार उछाल रहा है (घोषणा को शीर्ष पर ले जा रहा है)।