Obyektlarda getter va setter


ULASHISH

JavaScript getter va setterlari

Qabul qiluvchilar va sozlagichlar obyektga kirish vositalarini (hisoblash xususiyatlari) aniqlashga imkon beradi.


JavaScript getter (get kalit so‘zi)

Bu misol get uchun lang xususiyatidan foydalanadi language xususiyatining qiymati.

Misol

// Create an object:
const person = {
  firstName: "John",
  lastName: "Doe",
  language: "en",
  get lang() {
    return this.language;
  }
};

// Display data from the object using a getter:
document.getElementById("demo").innerHTML = person.lang;
O‘zingiz sinab ko‘ring »

JavaScript setter (set kalit so‘zi)

Ushbu misolda language xossasi qiymatini o‘rnatish (set) uchun lang xossasidan foydalaniladi.

Misol

const person = {
  firstName: "John",
  lastName: "Doe",
  language: "",
  set lang(lang) {
    this.language = lang;
  }
};

// Set an object property using a setter:
person.lang = "en";

// Display data from the object:
document.getElementById("demo").innerHTML = person.language;
O‘zingiz sinab ko‘ring »


JavaScript funksiyasimi yoki getter?

Ushbu ikki misol o‘rtasidagi farq nima?

1-misol

const person = {
  firstName: "John",
  lastName: "Doe",
  fullName: function() {
    return this.firstName + " " + this.lastName;
  }
};

// Display data from the object using a method:
document.getElementById("demo").innerHTML = person.fullName();
O‘zingiz sinab ko‘ring »

2-misol

const person = {
  firstName: "John",
  lastName: "Doe",
  get fullName() {
    return this.firstName + " " + this.lastName;
  }
};

// Display data from the object using a getter:
document.getElementById("demo").innerHTML = person.fullName;
O‘zingiz sinab ko‘ring »

1-misolda fullName’ga funksiya sifatida murojaat qilinadi: person.fullName().

2-misolda fullName’ga xususiyat sifatida murojaat qilinadi: person.fullName.

Ikkinchi misol oddiyroq sintaksisni taqdim etadi.


Ma’lumotlar sifati

JavaScript qabul qiluvchilar va sozlagichlardan foydalanganda ma’lumotlar sifatini yaxshilashi mumkin.

Ushbu misolda lang xossasidan foydalanish language xossasining qiymatini katta harflarda qaytaradi:

Misol

// Create an object:
const person = {
  firstName: "John",
  lastName: "Doe",
  language: "en",
  get lang() {
    return this.language.toUpperCase();
  }
};

// Display data from the object using a getter:
document.getElementById("demo").innerHTML = person.lang;
O‘zingiz sinab ko‘ring »

Ushbu misolda lang xossasidan foydalanish language xossasiga katta harfli qiymatni saqlaydi:

Misol

const person = {
  firstName: "John",
  lastName: "Doe",
  language: "",
  set lang(lang) {
    this.language = lang.toUpperCase();
  }
};

// Set an object property using a setter:
person.lang = "en";

// Display data from the object:
document.getElementById("demo").innerHTML = person.language;
O‘zingiz sinab ko‘ring »

Nega getter va setterlardan foydalanish kerak?

  • Soddaroq sintaksis beradi
  • U xususiyatlar va usullar uchun teng sintaksisga imkon beradi
  • Ma’lumotlar sifatini yaxshiroq ta’minlashi mumkin
  • Bu sahna ortidagi narsalarni qilish uchun foydalidir

Agar sizga faqat oddiy qiymatlar kerak bo‘lsa, getter yoki setterlardan foydalanmang (ortiqcha ishlatishning oldini oladi).


Object.defineProperty()

Object.defineProperty() metodidan Getter va Setterlarni qo‘shish uchun ham foydalanish mumkin:

Hisoblagich misoli

// Define object
const obj = {counter : 0};

// Define setters and getters
Object.defineProperty(obj, "reset", {
  get : function () {this.counter = 0;}
});
Object.defineProperty(obj, "increment", {
  get : function () {this.counter++;}
});
Object.defineProperty(obj, "decrement", {
  get : function () {this.counter--;}
});
Object.defineProperty(obj, "add", {
  set : function (value) {this.counter += value;}
});
Object.defineProperty(obj, "subtract", {
  set : function (value) {this.counter -= value;}
});

// Play with the counter:
obj.reset;
obj.add = 5;
obj.subtract = 1;
obj.increment;
obj.decrement;
O‘zingiz sinab ko‘ring »


W3Schools Pathfinder

Yutuqlaringizni kuzating – bu bepul!