defineProperty()
Misol
Xususiyat qo‘shing:
// Create an Object:
const person = {
firstName: "John",
lastName: "Doe",
language: "EN"
};
// Add a new Property
Object.defineProperty(person, "year", {value:"2008"})
O‘zingiz sinab ko‘ring »
Xususiyatni o‘zgartiring:
// 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 »
Quyida ko‘proq misollar!
Tavsif
Object.defineProperty() metodi obyekt xususiyatini qo‘shadi yoki o‘zgartiradi.
Object.defineProperty() metodi xususiyat metama’lumotlarini o‘zgartirish imkonini beradi.
Object.defineProperty() metodi getter va setterlar qo‘shish imkonini beradi.
Quyida ko‘proq misollarni ko‘ring.
Tegishli metodlar:
Object.defineProperty() bitta xususiyatni qo‘shadi yoki o‘zgartiradi.
Object.defineProperties() ko‘plab xususiyatlarni qo‘shadi yoki o‘zgartiradi.
Object.getOwnPropertyNames() obyekt xususiyatlarining nomlarini qaytaradi.
Object.getOwnPropertyDescriptor() xususiyat deskriptorini qaytaradi.
Object.getOwnPropertyDescriptors() barcha xususiyatlar deskriptorlarini qaytaradi.
Sintaksis
Object.defineProperty(object, property, descriptor)
Parametrlar
| Parametr | Tavsif |
| object | Majburiy. Obyekt. |
| property | Majburiy. Xususiyat nomi. |
| descriptor | Majburiy. Qo‘shiladigan yoki o‘zgartiriladigan xususiyat deskriptori: value: value writable : true|false enumerable : true|false configurable : true|false get : function set : function |
Qaytariladigan qiymat
| Tip | Tavsif |
| Object | O‘zgarishlar kiritilgan, uzatilgan obyekt. |
Ko‘proq misollar
Misol
// Create an Object:
const person = {
firstName: "John",
lastName : "Doe",
language : "NO",
};
// Change a Property:
Object.defineProperty(person, "language", {
value: "EN",
writable : true,
enumerable : true,
configurable : true
});
// Enumerate Properties
let txt = "";
for (let x in person) {
txt += person[x] + "<br>";
}
// Display Properties
document.getElementById("demo").innerHTML = txt;
O‘zingiz sinab ko‘ring »
Keyingi misol ham xuddi shu kod, faqat unda language xususiyati sanab o‘tishdan (enumeration) yashiriladi:
Misol
// Create an Object:
const person = {
firstName: "John",
lastName : "Doe",
language : "NO",
};
// Change a Property:
Object.defineProperty(person, "language", {
value: "EN",
writable : true,
enumerable : false,
configurable : true
});
// Enumerate Properties
let txt = "";
for (let x in person) {
txt += person[x] + "<br>";
}
document.getElementById("demo").innerHTML = txt;
O‘zingiz sinab ko‘ring »
Setter va getterlar
Bu misolda language qiymatini katta harflarda xavfsiz yangilash uchun setter va getter yaratiladi:
Misol
// Create an Object:
const person = {
firstName: "John",
lastName : "Doe",
language : "NO"
};
// Change a Property:
Object.defineProperty(person, "language", {
get : function() { return language },
set : function(value) { language = value.toUpperCase()}
});
// Change Language
person.language = "en";
// Display Language
document.getElementById("demo").innerHTML = person.language;
O‘zingiz sinab ko‘ring »
Bu misolda ism va familiyani birlashtirish uchun getter ishlatiladi:
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 »
JavaScript getter va setterlari hisoblagichlar yaratish uchun juda mos:
Misol
// 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;}
});
O‘zingiz sinab ko‘ring »
Brauzerlarda qo‘llab-quvvatlash
Object.defineProperty() — ECMAScript5 (ES5 2009) imkoniyati.
JavaScript 2009 2013-yil iyulidan beri barcha brauzerlarda qo‘llab-quvvatlanadi:
| Chrome 23 |
IE/Edge 11 |
Firefox 21 |
Safari 6 |
Opera 15 |
| 2012-yil sentabr | 2012-yil sentabr | 2013-yil aprel | 2012-yil iyul | 2013-yil iyul |
Obyektlar bo‘yicha darsliklar
W3Schools Pathfinder
Yutuqlaringizni kuzating – bu bepul!
