मेरे पास ऐसा बयान है।

let Polygon = class{
  constructor(){
    //stuff
  }
  
  draw(){
    //more stuff
  }
}

मैं इस वर्ग को इस प्रकार विस्तारित करना चाहता हूं:

class Board extends Polygon{
  constructor(){
    //stuff
  }
}

लेकिन मैं इसे बहुभुज जैसे चर के रूप में भी स्टोर करना चाहता हूं। इसका उपयोग करना:

let Board = class extends Polygon{

}

काम नहीं करता। मैं इसे कैसे स्टोर कर सकता हूं जैसे मैंने पॉलीगॉन के साथ किया था?

-1
Nate Hoffmaster 18 सितंबर 2019, 14:45

1 उत्तर

सबसे बढ़िया उत्तर

यह ठीक काम करता है (लेकिन पढ़ते रहें):

let Polygon = class{
  constructor(){
    //stuff
  }
  
  draw(){
    //more stuff
  }
};

let Board = class extends Polygon {

};

console.log(typeof Board);

...लेकिन ध्यान दें कि

let Board = class extends Polygon {

};

तथा

class Board extends Polygon {

}

वही काम बिल्कुल करें। वे दोनों:

  • आधुनिक पहचानकर्ता स्कोपिंग और शब्दार्थ (जैसे, टेम्पोरल डेड ज़ोन, आदि के साथ) का उपयोग करके वर्तमान निष्पादन संदर्भ में Board नामक एक परिवर्तनशील चर बनाएँ, जिसमें उस दायरे में प्रवेश होता है जिसमें उपरोक्त होता है। let, const, और class सभी आधुनिक पहचानकर्ता शब्दार्थ का उपयोग करते हैं। (var लीगेसी स्कोपिंग और शब्दार्थ का उपयोग करता है।)
  • उस वेरिएबल को class कंस्ट्रक्टर द्वारा बनाए गए कंस्ट्रक्टर के साथ Board में इनिशियलाइज़ करें, जब कोड के चरण-दर-चरण निष्पादन में वह स्टेटमेंट/घोषणा पहुँच जाती है।

(इसके विपरीत, const Board = class extends Polygon { }; पहचानकर्ता को बाध्यकारी अपरिवर्तनीय बनाता है।)

3
T.J. Crowder 18 सितंबर 2019, 14:53