क्लास की अवधि बढ़ाएं

extends कीवर्ड का इस्तेमाल क्लास की जानकारी या एक्सप्रेशन में ऐसी क्लास बनाने के लिए किया जाता है जो किसी दूसरी की सब-क्लास के तौर पर काम करती है. इसमें, पैरंट क्लास (जिसे कभी-कभी "बेस क्लास" भी कहा जाता है) चाइल्ड क्लास के प्रोटोटाइप के तौर पर काम करती है.

class ParentClass {}
class ChildClass extends ParentClass {}

Object.getPrototypeOf( ChildClass );
> class ParentClass {}

ये सब-क्लास, पैरंट क्लास की प्रॉपर्टी और मेथड को इनहेरिट करती हैं. इससे, क्लास के मुख्य फ़ंक्शन को बेहतर बनाया जा सकता है, ताकि आप ज़्यादा खास मकसद पूरे कर सकें. इसके लिए, पैरंट क्लास को ज़रूरत के मुताबिक, इस्तेमाल के हर उदाहरण के हिसाब से ओवरलोड किए बिना या कोड को फिर से लागू किया जा सकता है.

चाइल्ड क्लास, पैरंट क्लास से इनहेरिट किए गए तरीकों को खुद ही लागू कर सकती हैं:

class MyClass {
  constructor( myPassedValue ) {
    this.instanceProp = myPassedValue;
  }
  classMethod() {
    console.log( `The value was '${ this.instanceProp }.'`)
  }
}
class ChildClass extends MyClass {
  classMethod() {
    console.log( `The value was '${ this.instanceProp },' and its type was '${ typeof this.instanceProp }.'`)
  }
}

const myParentClassInstance = new MyClass( "My string." );
const mySubclassInstance = new ChildClass( 100 );

myParentClassInstance.classMethod();
> "The value type was 'string.'"

mySubclassInstance.classMethod();
> "The value was '100,' and its type was 'number.'"

super का इस्तेमाल करके, चाइल्ड क्लास के संदर्भ में पैरंट क्लास में तय किए गए तरीकों को भी कॉल किया जा सकता है:

class MyClass {
  constructor( myPassedValue ) {
    this.instanceProp = myPassedValue;
  }
  classMethod() {
    console.log( `The value was '${ this.instanceProp }.'`)
  }
}

class ChildClass extends MyClass {
  subclassMethod() {
    super.classMethod();
    console.log( `The value type was '${ typeof this.instanceProp }.'`)
  }
}
const mySubclassInstance = new ChildClass( 100 );

mySubclassInstance.subclassMethod();
> The value was '100.'
> The value type was 'number.'

जैसा कि पिछले उदाहरणों में बताया गया है, जब किसी चाइल्ड क्लास के संदर्भ में constructor() तरीके को हटाया जाता है, तो JavaScript का इंप्लिसिट कंस्ट्रक्टर, आर्ग्युमेंट के उसी सेट के साथ पैरंट कंस्ट्रक्टर को कॉल करता है. हालांकि, अगर सब-क्लास में कोई कंस्ट्रक्टर है, तो this को रेफ़र करने से पहले, ज़रूरी आर्ग्युमेंट के साथ super() को कॉल करना ज़रूरी है.

class MyClass {
  constructor( myPassedValue ) {
    this.instanceProp = myPassedValue;
  }
  classMethod() {
    console.log( `The value was '${ this.instanceProp }.'`)
  }
}

class ChildClass extends MyClass {
    constructor( myPassedValue ) {
        super( myPassedValue );
        this.modifiedProp = myPassedValue + 50;
    }\
    subclassMethod() {
        super.classMethod();
        console.log( `The value type was '${ typeof this.instanceProp }.'`)
    }
}
const mySubclassInstance = new ChildClass( 100 );

mySubclassInstance;
> MyClass { instanceProp: 100, modifiedProp: 150 }

गेटर और सेटर खास तरीके हैं. इनका इस्तेमाल खास तौर पर, वैल्यू को पाने और तय करने के लिए किया जाता है. get और set कीवर्ड का इस्तेमाल करके बनाए गए तरीकों की मदद से, ऐसे तरीके बनाए जा सकते हैं जिनसे इंटरैक्ट किया जा सके. जैसे, वे स्टैटिक प्रॉपर्टी हों.

class MyClass {
    constructor( originalValue ) {
        this.totalValue = 0;
    }
    set doubleThisValue( newValue ) {
        this.totalValue = newValue * 2;
    }
    get currentValue() {
        console.log( `The current value is: ${ this.totalValue }` );
    }
}
const myClassInstance = new MyClass();

myClassInstance;
> MyClass { totalValue: 0 }

myClassInstance.doubleThisValue = 20;

myClassInstance.currentValue;
> The current value is: 40

get और set प्रॉपर्टी, क्लास की प्रोटोटाइप प्रॉपर्टी पर तय की जाती हैं. इसलिए, ये क्लास के सभी इंस्टेंस के लिए उपलब्ध होती हैं.

जांचें कि आपको कितना समझ आया

extends कीवर्ड से बनाई गई क्लास के बारे में सही स्टेटमेंट चुनें.

यह अपने दायरे में आने वाली क्लास के चाइल्ड के तौर पर काम करता है.
यह अपने पैरंट क्लास की प्रॉपर्टी और मेथड को इनहेरिट करता है.
यह उस क्लास के पैरंट के तौर पर काम करता है जिसमें यह शामिल होती है.
It can't overwrite methods from a parent class.