जावास्क्रिप्ट क्लास इन्हेरिटेंस

क्लास आगे वाला

क्लास आगे वाला बनाने के लिए इसे इस्तेमाल करें एक्सटेंड्स कीवर्ड.

क्लास आगे वाला बनाने के लिए क्लास आगे वाला बनाएं

इंस्टांस

एक नाम 'Model' वाली क्लास बनाएं जो 'Car' क्लास के तरीकों को आगे वाला होगी:

class Car {
  constructor(brand) {
    this.carname = brand;
  }
  प्रेजेंट() {
    वापस '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() विधि को माता क्लास को संदर्भित करती है।

constructor विधि में super() विधि, हमने माता क्लास के constructor विधि को बुलाया, माता क्लास के गुण और विधियों की पहुच प्राप्त की।

विरासत कोड की रीसाइकिंग के लिए काफी सहायक है: नई क्लास का निर्माण करते समय मौजूदा क्लास के गुण और विधियों का प्रयोग करते हैं।

Getter और Setter

क्लास इसके साथ गेटर और सेटर का उपयोग करने की भी अनुमति देती है:

आपके गुण के लिए getter और setter उपयोग करना बहुत चतुर है, खासकर अगर आप उन्हें वापस करने या सेट करने से पहले कुछ विशेष काम करना चाहते हैं:

जदि आप क्लास में getter और setter जोड़ना चाहते हैं तो गेट और सेट कीवर्ड.

इंस्टांस

गुण "carname" के लिए getter और setter बनाएं:

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;

अपने आप सही करें

टिप्पणी:भले ही getter एक विधि हो, जब आप गुण मान प्राप्त करना चाहते हैं तो बारेकूट नहीं लगाएं:

getter/setter विधि का नाम गुण नाम से मिलता नहीं हो सकता है, इस मामले में यह carname

कई प्रोग्रामर गुण नाम के आगे एक निशान चिह्न _ का प्रयोग करके getter/setter को वास्तविक गुण से अलग करते हैं:

इंस्टांस

आप एक निशान चिह्न को प्रयोग करके getter/setter को वास्तविक गुण से अलग कर सकते हैं:

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;

अपने आप सही करें

सेटर का उपयोग करने के लिए समान वाक्यांश का उपयोग करें, कोई बारेकूट नहीं लगाएं:

इंस्टांस

यहाँ पर सेटर के द्वारा कार के नाम को "Volvo" में बदलें:

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;

अपने आप सही करें

Hoisting

फ़ंक्शन और अन्य JavaScript घोषणाओं के विपरीत, क्लास घोषणा उठाने की घोषणा नहीं होती है।

इसका मतलब है कि आपको पहले क्लास को घोषित करना होगा और फिर इसे उपयोग कर सकते हैं:

इंस्टांस

//आप अभी इस क्लास का उपयोग नहीं कर सकते।
//myCar = new Car("Ford")
//यह त्रुटि उठाएगी。
class Car {
  constructor(brand) {
    this.carname = brand;
  }
}
//अब आप इस क्लास का उपयोग कर सकते हैं:
let myCar = new Car("Ford")

अपने आप सही करें

टिप्पणी:अन्य घोषणाओं, जैसे कि फ़ंक्शनों के साथ, घोषणा से पहले इसे उपयोग करने के प्रयास में त्रुटि नहीं होगी, क्योंकि JavaScript घोषणा का डिफ़ॉल्ट व्यवहार उठाना है (घोषणा को शीर्ष में ले जाना)।