CodeBlanks Logo Icon CodeBlanks

has, deleteProperty trap'leri

JavaScript kursu · İleri seviye · Ders 62/100

has ve deleteProperty trap'leri ile in operatörünü ve silme işlemini yakalamayı öğrenirsin.

has trap'i

has trap, in operatörü kullanıldığında çalışır. 'port' in proxy yazdığında handler üzerindeki has metodu çağrılır ve true ya da false döndürür.

const handler = {
  has(target, prop) {
    return prop in target;
  }
};

Trap imzası has(target, prop) şeklindedir. Böylece bir özelliğin varlığını gizleyebilir veya genişletebilirsin. Örneğin, bazı iç özellikleri yok sayabilir ve dışarıdan erişilemiyor gibi gösterebilirsin.

deleteProperty trap'i

deleteProperty trap, delete proxy.port yazdığında çalışır. Handler üzerindeki deleteProperty metodu, silme işlemini yakalar.

const handler = {
  deleteProperty(target, prop) {
    delete target[prop];
    return true;
  }
};

Trap imzası deleteProperty(target, prop) şeklindedir. Silme işleminden önce loglama yapabilir, bazı özelliklerin silinmesini engelleyebilir veya ek temizlik işleri uygulayabilirsin. Tıpkı set trap gibi, bu da true döndürmelidir.

Uygulama has ve deleteProperty trap'lerini yaz

config adında host ve port özellikleri olan bir nesne tanımla. handler içinde has ve deleteProperty trap'lerini yaz: has trap prop in target döndürsün, deleteProperty trap delete target[prop] yapıp true döndürsün. proxy değişkenini new Proxy(config, handler) ile oluştur. console.log('port' in proxy) ile yazdır, delete proxy.port yap ve tekrar console.log('port' in proxy) ile yazdır.

Örnek çözümü göster
const config = { host: 'localhost', port: 3000 };
const handler = {
  has(target, prop) {
    return prop in target;
  },
  deleteProperty(target, prop) {
    delete target[prop];
    return true;
  }
};
const proxy = new Proxy(config, handler);
console.log('port' in proxy);
delete proxy.port;
console.log('port' in proxy);

Kendini test et

  1. 'port' in proxy ifadesi hangi trap'i tetikler?

    • get
    • has
    • set
    • deleteProperty
    Cevabı göster

    has — Doğru! in operatörü has trap'i tetikler; bu da varlık kontrolünü yakalar.

  2. deleteProperty içinde silme işlemi

    deleteProperty(target, prop) {
      delete ____;
      return true;
    }
    Cevabı göster
    deleteProperty(target, prop) {
      delete target[prop];
      return true;
    }
  3. has ve deleteProperty kavramlarını eşleştir

    has trap
    in operatörünü yakalar
    deleteProperty
    silme işlemini yakalar
    in
    varlık kontrolü
    delete
    özellik kaldırma

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