JavaScript ES5 Nesne Yöntemleri

ECMAScript 5 (2009) JavaScript'a birçok yeni nesne yöntemi ekledi.

Nesneyi yönetme

// Mevcut nesneyi prototip olarak kullanarak nesne oluşturma
Object.create()
// Nesneye özellik eklemeyi veya değiştirmeyi ekler
Object.defineProperty(object, property, descriptor)
// Nesneye özellik eklemeyi veya değiştirmeyi ekler
Object.defineProperties(object, descriptors)
// Özellik erişme
Object.getOwnPropertyDescriptor(object, property)
// Tüm özellikleri döner
Object.getOwnPropertyNames(object)
// Prototipi erişme
Object.getPrototypeOf(object)
// Dizgi olarak sayısallaştırılabilir özellikleri döner
Object.keys(object)

Nesneyi koruma

// Nesneye özellik eklemeyi önler
Object.preventExtensions(object)
// Özellik eklenebilirse, true döner
Object.isExtensible(object)
// Nesne özelliklerini (değerleri değil) değiştirmeyi önler
Object.seal(object)
// Eğer nesne kilitlenmişse, true döner
Object.isSealed(object)
// Nesneye herhangi bir değişiklik yapmayı önler
Object.freeze(object)
// Eğer nesne donatılmışsa, true döner
Object.isFrozen(object)

Özellik değeri değiştirme

Gramer

Object.defineProperty(object, property, {value : value)

örnek

Bu örnekteki özellik değeri değiştirme:

const person = {
  firstName: "Bill",
  lastName : "Gates",
  language : "EN"
};
// Özellik değiştirme
Object.defineProperty(person, "language", {value : "NO"});

Kişisel olarak deneyin

Meta verileri değiştirme

ES5, aşağıdaki özellik meta verilerini değiştirmeyi izin verir:

writable : true      // Özellik değeri değiştirilebilir
enumerable : true    // Özellik sayısallaştırılabilir
configurable : true  // Özellik yeniden yapılandırılabilir
writable : false     // Özellik değeri değiştirilemez
enumerable : false   // Özellik sayısallaştırılabilir değil
configurable : false // özellik yeniden yapılandırılamaz

ES5, getter ve setter'lerin değiştirilmesine izin verir:

// tanımlama getter
get: function() { return language }
// tanımlama setter
set: function(value) { language = value }

Bu örnek, language'ı yalnızca okunabilir olarak ayarlar:

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

Bu örnek, language'ı sayılamaz hale getirir:

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

Tüm özellikleri sıralama

Bu örnek, bir nesnenin tüm özelliklerini sıralar:

örnek

const person = {
  firstName: "Bill",
  lastName : "Gates",
  language : "EN"
};
Object.defineProperty(person, "language", {enumerable:false});
Object.getOwnPropertyNames(person);  // dizilerin dizisini döndürür

Kişisel olarak deneyin

Sayılabilecek özellikleri sıralama

Bu örnek, yalnızca nesnenin sayılabilecek özelliklerini sıralar:

örnek

const person = {
  firstName: "Bill",
  lastName : "Gates",
  language : "EN"
};
Object.defineProperty(person, "language", {enumerable:false});
Object.keys(person);  // sayılabilecek özelliklerin dizisini döndürür

Kişisel olarak deneyin

Özellik ekleme

Bu örnek, nesneye yeni özellik ekler:

örnek

// nesne oluşturma
const person = {
  firstName: "Bill",
  lastName : "Gates",
  language : "EN"
};
// özellik ekleme
Object.defineProperty(person, "year", {value:"2008"});

Kişisel olarak deneyin

Getter ve Setter eklemek

Object.defineProperty() Method, Getter ve Setter eklemek için de kullanılabilir:

örnek

// nesne oluşturma
const person = {firstName:"Bill", lastName:"Gates"};
// tanımlama getter
Object.defineProperty(person, "fullName", {
  get: function () {return this.firstName + " " + this.lastName;}
});

Kişisel olarak deneyin

bir sayıcı örneği

// nesne tanımlama
const obj = {counter:0};
// tanımlama setter
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;}
});
// Sayıcı operasyonu:
obj.reset;
obj.add = 5;
obj.subtract = 1;
obj.increment;
obj.decrement;

Kişisel olarak deneyin