ES6 standardında sunulan yeni özelliklerden biri Proxy nesnesidir. Proxy nesnesi, temel işlemlere özel davranış tanımlamak için kullanılır. Örneğin özellik araması, atama, numaralandırma, işlev çağırma, vb. gibi temel işlemler için uygundur.
Proxy kavramı için 3 terimi bilmemiz gerekir:
- handler: trap’leri içeren the placeholder (yer tutucu) object
- target: proxy’nin sanallaştırdığı nesne
- traps: özellik erişimi sağlayan metotlar
Basit bir örnekle konuyu açıklayalım.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
let handler = { get: function(target, name){ return name in target ? target[name] : 'anahtar yok'; } }; let nesne = { deg1: 'ES6', deg2: 'Proxy' } let p = new Proxy(nesne, handler) console.log(p.deg1) console.log(p.deg2) console.log(p.yok) |
1 2 3 |
ES6 Proxy anahtar yok |
Öncelikle bir handler tanımladık. İşlemlerimiz bu handler üzerinden geçecek. get property’si eğer verilen target’a uygun işlem ise sonucu aksi takdirde ise “anahtar yok” hatasaını döndürür. İki değişkenden oluşan bir nesne oluşturduk. New ile yeni bir Proxy oluşturduk. Proxy sınıfının yapıcısına sırasıyla nesne ve handler değerlerini döndürdük. Proxy üzerinden deg1 ve deg2 ulaşabiliriz. Ancak, olmayan bir değere ulaştığımızda hatalı sonuç döndürür. Görüldüğü gibi nesnenin davranışını değiştirdik.