JavaScript Object.defineProperty()

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"});

Kişisel olarak deneyin

Ö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"});

Kişisel olarak deneyin

Ö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;

Kişisel olarak deneyin

Ö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;

Kişisel olarak deneyin

Ö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;

Kişisel olarak deneyin

Ö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; }
});

Kişisel olarak deneyin

Ö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; }
});

Kişisel olarak deneyin

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ı:

  • value: value
  • writable : true|false
  • enumerable : true|false
  • configurable : true|false
  • get : function
  • set : function

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