Obyektlarni boshqarish


Xususiyatlarni boshqarish metodlari

// Adding or changing an object property
Object.defineProperty(object, property, descriptor)

// Adding or changing object properties
Object.defineProperties(object, descriptors)

// Accessing a Property
Object.getOwnPropertyDescriptor(object, property)

// Accessing Properties
Object.getOwnPropertyDescriptors(object)

// Returns all properties as an array
Object.getOwnPropertyNames(object)

// Accessing the prototype
Object.getPrototypeOf(object)

ULASHISH

JavaScript Object.defineProperty() metodi

Object.defineProperty() usulidan quyidagilar foydalanish mumkin:

  • Obyektga yangi xususiyat qo‘shish
  • Changing property values
  • Changing property metadata
  • Obyekt getter va setterlarini o‘zgartirish

Sintaksis:

Object.defineProperty(object, property, descriptor)

Yangi xususiyat qo‘shish

Ushbu misol obyektga yangi xususiyat qo‘shadi:

Misol

// Create an Object:
const person = {
  firstName: "John",
  lastName : "Doe",
  language : "EN"
};

// Add a Property
Object.defineProperty(person, "year", {value:"2008"});
O‘zingiz sinab ko‘ring »

Xususiyat qiymatini o‘zgartirish

Ushbu misol xususiyat qiymatini o‘zgartiradi:

Misol

// Create an Object:
const person = {
  firstName: "John",
  lastName : "Doe",
  language : "EN"
};

// Change a Property
Object.defineProperty(person, "language", {value : "NO"});
O‘zingiz sinab ko‘ring »

Xususiyat atributlari

Barcha xususiyatlarning nomi bor. Bundan tashqari, ular ham qiymatga ega.

Qiymat xususiyatning atributlaridan biridir.

Boshqa atributlar: sanab o‘tiladigan, sozlanishi va yozilishi mumkin.

Ushbu atributlar xususiyatga qanday kirish mumkinligini belgilaydi (u o‘qilishi mumkinmi?, yozilishi mumkinmi?)

JavaScript’da barcha atributlarni o‘qish mumkin, lekin faqat value atributini o‘zgartirish mumkin (va faqat xususiyat yoziladigan bo‘lsa).

(ECMAScript 5 da barcha xususiyat atributlarini olish va sozlash usullari mavjud)


Metama’lumotlarni o‘zgartirish

Quyidagi xususiyat meta-ma’lumotlarini o‘zgartirish mumkin:

writable : true      // Property value can be changed
enumerable : true    // Property can be enumerated
configurable : true  // Property can be reconfigured
writable : false     // Property value can not be changed
enumerable : false   // Property can be not enumerated
configurable : false // Property can be not reconfigured

Qabul qiluvchilar va sozlagichlar ham o‘zgartirilishi mumkin:

// Defining a getter
get: function() { return language }
// Defining a setter
set: function(value) { language = value }

Bu misol language xususiyatini faqat o‘qish uchun qiladi:

Object.defineProperty(person, "language", {writable:false});

Ushbu misol tilni sanab bo‘lmaydi:

Object.defineProperty(person, "language", {enumerable:false});


JavaScript getOwnPropertyNames() metodi

Object.getOwnPropertyNames() metodi quyidagilarni bajara oladi:

  • List object properties

Sintaksis

Object.getOwnPropertyNames(object)

Obyektning barcha xususiyatlarini ro‘yxatlash

Ushbu misol obyektning barcha xususiyatlarini oladi:

Misol

// Create an Object
const person = {
  firstName: "John",
  lastName : "Doe",
  language : "EN"
};

// Get all Properties
Object.getOwnPropertyNames(person);
O‘zingiz sinab ko‘ring »

Object.getOwnPropertyNames() shuningdek sanab bo‘lmaydigan (not enumerable) xossalarni ham ro‘yxatga oladi:

Misol

// Create an Object
const person = {
  firstName: "John",
  lastName : "Doe",
  language : "EN"
};

// Set the language Property not enumerable
Object.defineProperty(person, "language", {enumerable:false});

// Get all Properties
Object.getOwnPropertyNames(person);
O‘zingiz sinab ko‘ring »

JavaScript Object.keys() metodi

Object.keys() metodi quyidagilarni bajara oladi:

  • List enumerable object properties

Sintaksis

Object.keys(object)

Obyektning sanaladigan (enumerable) xususiyatlarini ro‘yxatlash

Ushbu misolda Object.getOwnPropertyNames() o‘rniga Object.keys() ishlatiladi:

Misol

// Create an Object
const person = {
  firstName: "John",
  lastName : "Doe",
  language : "EN"
};

// Change the "language" Property
Object.defineProperty(person, "language", {enumerable:false});

// Get all Enumerable Properties
Object.keys(person);
O‘zingiz sinab ko‘ring »

getOwnPropertyNames() usuli barcha xususiyatlarni qaytaradi.

Object.keys() metodi barcha sanaladigan (enumerable) xususiyatlarni qaytaradi.

Agar siz obyekt xususiyatlarini sanab bo‘lmaydigan: falsesiz aniqlasangiz, ikkita usul bir xil narsani qaytaradi.


Getter va setterlarni qo‘shish

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

Misol

//Create an object
const person = {firstName:"John", lastName:"Doe"};

// Define a getter
Object.defineProperty(person, "fullName", {
  get: function () {return this.firstName + " " + this.lastName;}
});
O‘zingiz sinab ko‘ring »

Hisoblagich misoli

Misol

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

// Define setters
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 (i) {this.counter -= i;}
});

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

Prototip xususiyatlari

JavaScript obyektlari o‘z prototipining xususiyatlarini meros qilib oladi.

delete kalit so‘zi meros qilib olingan xususiyatlarni o‘chirmaydi, lekin agar siz a prototip xususiyati, u barcha obyektlarga ta’sir qiladi prototipdan meros qilib olingan.



W3Schools Pathfinder

Yutuqlaringizni kuzating – bu bepul!