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

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 का इंप्लिसिट कंस्ट्रक्टर, पैरंट को कॉल करता है आर्ग्युमेंट के समान सेट के साथ कंस्ट्रक्टर के साथ काम करता है. हालांकि, अगर कोई कंस्ट्रक्टर है, तो इसे पहले super() को किसी this का संदर्भ देने से पहले ज़रूरी तर्क.

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.