CodeBlanks Logo Icon CodeBlanks

Reflect API

JavaScript kursu · İleri seviye · Ders 63/100

Reflect nesnesini ve trap içinde varsayılan davranışı nasıl uygulayacağını öğrenirsin.

Reflect nedir?

Reflect, nesne işlemleri için metodlar sunan yerleşik bir nesnedir. Bu metodlar, Proxy trap'leriyle birebir aynı isimlere ve davranışlara sahiptir; böylece trap içinden varsayılan davranışı çağırmanın temiz yoludur.

Reflect.get(target, prop);
Reflect.set(target, prop, value);

Reflect.get bir özellik okur, Reflect.set bir özelliğe değer yazar ve başarılıysa true döndürür. Reflect.has ise in operatörüyle aynı sonucu verir. Proxy ile birlikte kullanıldığında kodun kısa ve tutarlı kalır.

Reflect trap içinde

Bir trap yazarken çoğu zaman amacın işlemi yakalayıp sonra olduğu gibi uygulamaktır. Reflect bunu tek satırda yapar.

const handler = {
  get(target, prop) {
    return Reflect.get(target, prop);
  }
};

Buraya bir console.log satırı ekleyerek loglama trap'i elde edersin ya da bir koşul ekleyerek doğrulama yaparsın. Reflect çağrısı kaldırılsa bile trap yine de çalışır; ancak Reflect ile kodun niyeti daha net görünür ve davranış proxy ile birebir aynı kalır.

Uygulama Reflect ile get ve set trap'leri

user adında name özelliği olan bir nesne tanımla. handler içinde get ve set trap'lerini yaz: her ikisi de Reflect çağrısı ile varsayılan davranışı uygulasın (get trap Reflect.get(target, prop) döndürsün, set trap Reflect.set(target, prop, value) döndürsün). proxy değişkenini new Proxy(user, handler) ile oluştur. proxy.age = 28 ata ve console.log(proxy.name) ile yazdır.

Örnek çözümü göster
const user = { name: 'Ayşe' };
const handler = {
  get(target, prop) {
    return Reflect.get(target, prop);
  },
  set(target, prop, value) {
    return Reflect.set(target, prop, value);
  }
};
const proxy = new Proxy(user, handler);
proxy.age = 28;
console.log(proxy.name);

Kendini test et

  1. Reflect metodlarını eşleştir

    Reflect.get
    özellik okur
    Reflect.set
    özellik yazar
    Reflect.has
    varlık kontrolü
    Reflect
    trap yardımcısı
  2. Reflect.get(target, prop) ne döndürür?

    • true veya false
    • undefined
    • yeni bir Proxy döndürür
    • target üzerindeki prop değerini
    Cevabı göster

    target üzerindeki prop değerini — Doğru! Reflect.get, target nesnesi üzerindeki prop özelliğinin değerini döndürür.

  3. get trap içinde Reflect kullan

    get(target, prop) {
      return ____;
    }
    Cevabı göster
    get(target, prop) {
      return Reflect.get(target, prop);
    }

İleri seviye bölümündeki tüm dersler