JavaScript Object.defineProperty()
- Önceki sayfa defineProperties()
- Sonraki sayfa entries()
- Üst katmanı geri al JavaScript nesne referans el kitabı
Tanım ve kullanım
Object.defineProperty()
Yöntem, nesnelerin özniteliklerini eklemek veya değiştirmek için kullanılır.
Object.defineProperty()
Yöntem, öznitelik meta verilerini değiştirmenize olanak tanır.
Object.defineProperty()
Yöntem, getter ve setter eklemenize olanak tanır.
İlgili yöntemler:
Object.defineProperty()
Öznitelik ekle veya değiştir.
Object.defineProperties()
Birden fazla öznitelik ekle veya değiştir.
Object.getOwnPropertyNames()
Nesnenin tüm öznitelik adlarını döndürür.
Object.getOwnPropertyDescriptor()
Öznitelik tanımlarını döndürür.
Object.getOwnPropertyDescriptors()
Nesnenin tüm özniteliklerinin tanımlarını döndürür.
Örnek
Örnek 1
Öznitelik ekleme:
// Bir nesne oluştur const person = { firstName: "Bill", lastName: "Gates" language: "EN" }; // Yeni bir öznitelik eklenmesi Object.defineProperty(person, "year", {value:"2008"});
Örnek 2
Özniteliği değiştirme:
// Bir nesne oluştur const person = { firstName: "Bill", lastName: "Gates" language: "EN" }; // Bir özelliği değiştir Object.defineProperty(person, "language", {value:"NO"});
Örnek 3
// Bir nesne oluştur const person = { firstName: "Bill", lastName: "Gates" language: "NO" }; // Bir özelliği değiştir Object.defineProperty(person, "language", { value: "EN" writable: true, sayısallaştırılabilir: true, configurable: true }); // Özellikleri dola let txt = ""; for (let x in person) { txt += person[x] + "<br>"; } // Öznitelik gösterimi document.getElementById("demo").innerHTML = txt;
Örnek 4
Önceki örnekle aynı olan bir sonraki örnek, language özniteliğini gizleyerek, onu sayısallaştırılamaz hale getirir:
// Bir nesne oluştur const person = { firstName: "Bill", lastName: "Gates" language: "NO" }; // Bir özelliği değiştir Object.defineProperty(person, "language", { value: "EN" writable: true, enumerable: false, configurable: true }); // Özellikleri dola let txt = ""; for (let x in person) { txt += person[x] + "<br>"; } document.getElementById("demo").innerHTML = txt;
Örnek 5
Bu örnekte setter ve getter oluşturarak language özelliğinin büyük harflere güncellenmesini sağlıyoruz:
// Bir nesne oluştur const person = { firstName: "Bill", lastName: "Gates" language: "NO" }; // Bir özelliği değiştir Object.defineProperty(person, "language", { get: function() { return language }, set: function(value) { language = value.toUpperCase() } }); // language'ı değiştir person.language = "en"; // language'ı göster document.getElementById("demo").innerHTML = person.language;
Örnek 6
Bu örnekte firstName ve lastName'leri getter kullanarak birleştiriyoruz:
// Bir nesne oluştur const person = { firstName: "Bill", lastName: "Gates" }; // Bir Getter tanımla Object.defineProperty(person, "fullName", { get: function () { return this.firstName + " " + this.lastName; } });
Örnek 7
JavaScript'in Getter ve Setter'leri sayacı oluşturmak için çok uygun:
// Tanımlayıcı ve Getters ve 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 (value) { this.counter -= value; } });
Gramer
Object.defineProperty(object, property, descriptor)
Parametreler
Parametreler | Açıklama |
---|---|
object | Gerekli. Hedef nesne. |
property | Gerekli. Özellik adı. |
descriptor |
Gerekli. Ekleme veya değiştirme için gerekli özellik tanımı:
|
Dönüş değeri
Tip | Açıklama |
---|---|
Object | Değiştirilmiş nesne. |
Tarayıcı desteği
Object.defineProperty()
ECMAScript5 (ES5) özellikleridir.
2013 Temmuz'dan itibaren, tüm modern tarayıcılar ES5 (JavaScript 2009) tamamen destekler:
Chrome | Edge | Firefox | Safari | Opera |
---|---|---|---|---|
Chrome 23 | IE/Edge 11 | Firefox 21 | Safari 6 | Opera 15 |
2012 Eylül | 2012 Eylül | 2013 Nisan | 2012 Temmuz | 2013 Temmuz |
- Önceki sayfa defineProperties()
- Sonraki sayfa entries()
- Üst katmanı geri al JavaScript nesne referans el kitabı