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)
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.
Kengaytirilgan bo‘limlar:
JavaScript obyektlarini takrorlash
JavaScript obyektlarini qabul qiluvchilar va o‘rnatuvchilar
JavaScript obyektlarini boshqarish
JavaScript obyektini himoya qilish
W3Schools Pathfinder
Yutuqlaringizni kuzating – bu bepul!
