खोज…


परिचय

सेटर्स और गेटर्स ऑब्जेक्ट प्रॉपर्टीज हैं जो किसी फ़ंक्शन को सेट / प्राप्त होने पर कॉल करते हैं।

टिप्पणियों

एक ऑब्जेक्ट प्रॉपर्टी एक ही समय में एक गेटर और एक वैल्यू दोनों नहीं पकड़ सकती है। हालांकि, एक ऑब्जेक्ट प्रॉपर्टी एक ही समय में एक सेटर और एक गेटर दोनों को पकड़ सकती है।

एक नई निर्मित वस्तु में एक सेटर / गेट्टर को परिभाषित करना

जावास्क्रिप्ट हमें ऑब्जेक्ट शाब्दिक सिंटैक्स में गेटर्स और सेटर्स को परिभाषित करने की अनुमति देता है। यहाँ एक उदाहरण है:

var date = {
    year: '2017',
    month: '02',
    day: '27',
    get date() {
        // Get the date in YYYY-MM-DD format
        return `${this.year}-${this.month}-${this.day}`
    },
    set date(dateString) {
        // Set the date from a YYYY-MM-DD formatted string
        var dateRegExp = /(\d{4})-(\d{2})-(\d{2})/;
        
        // Check that the string is correctly formatted
        if (dateRegExp.test(dateString)) {
            var parsedDate = dateRegExp.exec(dateString);
            this.year = parsedDate[1];
            this.month = parsedDate[2];
            this.day = parsedDate[3];
        }
        else {
            throw new Error('Date string must be in YYYY-MM-DD format');
        }
    }
};

date.date प्रॉपर्टी पर date.date 2017-02-27 मान वापस आ जाएगा। date.date = '2018-01-02 को सेट करना date.date = '2018-01-02 को कॉल करेगा, जो तब स्ट्रिंग को पार्स करेगा और date.year = '2018' , date.month = '01' , और date.day = '02' । गलत रूप से स्वरूपित स्ट्रिंग (जैसे "hello" ) को पारित करने की कोशिश करने से त्रुटि आ जाएगी।

एक सेट्टर / गेट्टर का उपयोग करना Object.defineProperty को परिभाषित करना

var setValue;
var obj = {};
Object.defineProperty(obj, "objProperty", {
    get: function(){
        return "a value";
    },
    set: function(value){
        setValue = value;
    }
});

ईएस 6 कक्षा में गेटर्स और सेटर्स को परिभाषित करना

class Person {
  constructor(firstname, lastname) {
    this._firstname = firstname;
    this._lastname = lastname;
  }

  get firstname() {
    return this._firstname;
  }

  set firstname(name) {
    this._firstname = name;
  }

  get lastname() {
    return this._lastname;
  }

  set lastname(name) {
    this._lastname = name;
  }
}

let person = new Person('John', 'Doe');

console.log(person.firstname, person.lastname); // John Doe

person.firstname = 'Foo';
person.lastname = 'Bar';

console.log(person.firstname, person.lastname); // Foo Bar


Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow