JavaScript
Proxy kullanım örnekleri
Doğrulama, loglama ve izleme gibi gerçek proxy kullanımlarını öğrenirsin.
Doğrulama proxy'si
Proxy'nin en yaygın kullanımı doğrulamadır. set trap içine bir koşul koyarak bir özelliğe yalnızca geçerli değerlerin yazılmasını sağlarsın.
const handler = {
set(target, prop, value) {
if (typeof value !== 'number') {
throw new TypeError('sayı gerek');
}
return Reflect.set(target, prop, value);
}
};
Burada age özelliğine sayı dışında bir değer yazmak hataya yol açar. Doğrulama mantığı tek bir yerde, proxy içinde toplanır; böylece her atama noktasında aynı koşul uygulanır.
Loglama ve izleme proxy'si
Proxy, loglama ve izleme için de kullanışlıdır. get trap içine bir console.log satırı ekleyerek her özellik okumasını kayda alırsın; set trap içine ekleyerek her atamayı izlersin.
const handler = {
get(target, prop) {
console.log('read', prop);
return Reflect.get(target, prop);
}
};
Bu desen, hata ayıklama sırasında hangi özelliğe ne zaman erişildiğini görmek için çok güçlüdür. Reflect çağrısı kaldırılırsa normal davranış bozulur; bu yüzden log satırından sonra Reflect ile varsayılan davranışı uygularsın.
Uygulama Doğrulama proxy'si yaz
user adında boş bir nesne tanımla. handler içinde set trap yaz: prop === 'age' ve typeof value !== 'number' ise throw new TypeError('age must be a number') fırlat; değilse Reflect.set(target, prop, value) döndür. proxy değişkenini new Proxy(user, handler) ile oluştur. proxy.age = 28 ata ve console.log(proxy.age) ile yazdır.
Örnek çözümü göster
const user = {};
const handler = {
set(target, prop, value) {
if (prop === 'age' && typeof value !== 'number') {
throw new TypeError('age must be a number');
}
return Reflect.set(target, prop, value);
}
};
const proxy = new Proxy(user, handler);
proxy.age = 28;
console.log(proxy.age);
Kendini test et
-
Doğrulama proxy'sinin set trap'i ne yapar?
- değeri Reflect.set ile yazar ama önce kontrol eder
- her zaman true döndürür
- değeri yoksayar
- yalnızca console.log yapar
Cevabı göster
değeri Reflect.set ile yazar ama önce kontrol eder — Doğru! Doğrulama proxy'si önce değeri kontrol eder, sonra Reflect.set ile yazar.
-
Doğrulama hatası fırlat
if (typeof value !== 'number') {
____;
}
Cevabı göster
if (typeof value !== 'number') {
throw new TypeError('age must be a number');
}
-
Proxy kullanım örneklerini eşleştir
- doğrulama
- geçersiz değeri engeller
- loglama
- erişimi kaydeder
- izleme
- değişikliği bildirir
- varsayılan
- Reflect ile döner
Sıradaki ders: Özet - Proxy ve Reflect