कक्षा में एक समारोह से पहले "प्राप्त" कीवर्ड क्या है?


106

getइस ES6 वर्ग में क्या अर्थ है? मैं इस फ़ंक्शन का संदर्भ कैसे दूं? मुझे इसका उपयोग कैसे करना चाहिए?

class Polygon {
  constructor(height, width) {
    this.height = height;
    this.width = width;
  }

  get area() {
    return this.calcArea()
  }

  calcArea() {
    return this.height * this.width;
  }
}

5
यह सबसे अधिक संभावना है कि सिर्फ एक गटर है लेकिन एक वस्तु के बजाय एक वर्ग के अंदर। यह वास्तव में ES6- विशिष्ट नहीं है।
user4642212

@Xufox आपको कैसे मतलब है कि इसका ES6 विशिष्ट नहीं है?
कीथ निकोलस

1
@ कीथनिचोलस: कि यह ES5 में ही काम करता था।
बरगी

मुझे लगता है कि ES5 के बाद से @KeithNicholas Getters मौजूद है। केवल एक चीज जो ES6 है यहां classवाक्य रचना है, लेकिन गेटर्स कोई नई बात नहीं है।
user4642212

जवाबों:


109

इसका मतलब है कि फ़ंक्शन किसी संपत्ति के लिए एक गेटर है।

इसका उपयोग करने के लिए, इसका उपयोग करें जैसा कि आप किसी अन्य संपत्ति के नाम से करेंगे:

'use strict'
class Polygon {
  constructor(height, width) {
    this.height = height;
    this.width = width;
  }

  get area() {
    return this.calcArea()
  }

  calcArea() {
    return this.height * this.width;
  }
}

var p = new Polygon(10, 20);

alert(p.area);


2
कक्षाएं स्पष्ट रूप से सख्त मोड btw में हैं। ecma-international.org/ecma-262/6.0/#sec-strict-mode-code
Kit Sunde

1
@KitSunde - कम से कम मेरे ब्राउज़र (क्रोम, Win7) पर, उस बयान के बिना मुझे काम के नमूने के बजाय कंसोल त्रुटियां मिलती हैं। और यह "द जवाब" का हिस्सा नहीं है, बहुत कुछ "रन कोड स्निपेट" बटन की तरह नहीं है।
अमित

4
क्या आप सिर्फ कॉल नहीं कर सकते p. calcArea? यदि नहीं, तो क्यों नहीं?
ksav

9
क्या पॉलीगॉन.कैल्क्रिया () wil के रूप में भी एक गटर के रूप में कार्य करता है?
क्रेग ओ। कर्टिस

इसलिए फंक्शन पाने वाले getकीवर्ड में पैरामीटर नहीं हो सकता है?
jay1234

47

सारांश:

getकीवर्ड एक समारोह के लिए एक वस्तु संपत्ति के लिए बाध्य होगा। जब इस संपत्ति को देखा जाता है तो अब गेटटर फ़ंक्शन कहा जाता है। गेट्टर फ़ंक्शन का रिटर्न मान तब निर्धारित करता है कि कौन सी संपत्ति वापस आ गई है।

उदाहरण:

const person = {
    firstName: 'Willem',
    lastName: 'Veen',
    get fullName() {
        return `${this.firstName} ${this.lastName}`;
    }

}

console.log(person.fullName);
// When the fullname property gets looked up
// the getter function gets executed and its
// returned value will be the value of fullname


2
व्यावहारिक उदाहरण के लिए अंगूठे!
निकेत पाठक

8
मुझे लगता है कि मैं इसे और भी सरल बना सकता हूं। 'प्राप्त' आपको एक वर्ग विधि का इलाज करने देता है, जैसे कि यह एक वस्तु में एक साधारण संपत्ति थी। यदि आप 'प्राप्त' को छोड़ देते हैं, तो आप अभी भी .area () के बदले मान प्राप्त कर सकते हैं। केवल
.ea

21

यह ओटर जावास्क्रिप्ट में ऑब्जेक्ट्स और क्लासेस के समान ही गेटर है। MDN डॉक्स के लिए get:

getवाक्य रचना एक समारोह है कि जब कि संपत्ति ऊपर देखा है बुलाया जाएगा करने के लिए एक वस्तु संपत्ति बांधता है।


0

या अधिक सरल तरीके से यह फ़ंक्शन को केवल उपयोगकर्ता नाम की आवश्यकता के बिना कॉल करता है "()" बस फ़ंक्शन का नाम लिखकर

उपरोक्त दो फ़ंक्शन person.fullName () और person.fullName पर समान ध्यान देते हैं

const person = {
    firstName: 'Willem',
    lastName: 'Veen',
    fullName() {
        return `${this.firstName} ${this.lastName}`;
    }

}

console.log(person.fullName());

const person = {
    firstName: 'Willem',
    lastName: 'Veen',
    get fullName() {
        return `${this.firstName} ${this.lastName}`;
    }

}

console.log(person.fullName);

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.