Derse geri dön

`dictionary` objesine toString'i ekleyin

önem: 5

Object.create(null) olarak yaratılan ve her türlü anahtar/değer ikilisini tutan dictionary adında bir obje bulunmaktadır.

Buna dictionary.toString() metodu ekleyin, bu anahtarların virgül ile ayrılmış halini dönsün. Ama toString metodu for..in ile objenin keylerini dönerken görünmemelidir.

Şu şekilde çalışmalıdır:

let dictionary = Object.create(null);

//  dictionary.toString metodunu ekleyeceğiniz yer

// biraz veri ekleyin
dictionary.apple = "Apple";
dictionary.__proto__ = "test"; // __proto__ burada normal özellik olarak kullanılmıştır

// sadece apple ve __proto__ yazmalı
for(let key in dictionary) {
  alert(key); // "apple", sonra "__proto__"
}

// Artık sizin yazacağınız toString metodu burada çalışmalıdır.
alert(dictionary); // "apple,__proto__"

Metod tüm dönülebilir anahtarlını Object.keys ile alır ve listesini döner.

toString'i dönülemez yapmak için, özellik tanımlayıcı ile tanımlamak gereklidir. Bunun yazımı Object.create ile olur ve bu ikinci argüman olarak özellik tanımlayıcı alır.

let dictionary = Object.create(null, {
  toString: { // toString özelliğini tanımla.
    value() { // Değeri bir fonksiyondur.
      return Object.keys(this).join();
    }
  }
});

dictionary.apple = "Apple";
dictionary.__proto__ = "test";

// apple ve __proto__ döngüde yer alır
for(let key in dictionary) {
  alert(key); // "apple", sonra "__proto__"
}

// listenin virgül ile ayrılmış versiyonu döner.
alert(dictionary); // "apple,__proto__"

Tanımlayıcı ile özellik yarattığımızda bunun bayrakları varsayılan olarak false olur. Bundan dolayı yukarıdaki dictionary.toString dönülemezdir.

Daha fazla bilgi için Özellik bayrakları ve tanımlayıcılar bölümünü inceleyebilirsiniz.