JavaScript’te Proxy Kavramı

İsa Gül
2 min readApr 22, 2019

Merhaba, bu yazıda hayatımıza ES6 ile giren kullanışlı ama genel olarak çok kullanılmayan Proxy kavramı ile ilgili bir şeyler anlatacağım.

Proxy, MDN’de temel işlemler için özel davranışlar tanımlamak için kullanılır şeklinde tanımlanmıştır. Eğer bu tanımı açacak olursak; örneğin dışarıdan gelen bir nesnenin hangi propertylere sahip olacağını, bu propertylerin değerlerini veya tiplerini bilemeyiz. Proxy tam olarak bu noktada bize bu işlemlerde yardım sağlıyor. Nasıl bir yardım sağladığını aşağıdaki kod parçacıklarıyla açıklamaya çalışacağım. Proxy aynı zamanda arraylar veya fonksiyonlar için de kullanılabilir. Ancak ben nesneleri konu alacağım.

Proxy ile ilgili 3 temel kavram şunlardır:

  • handler: içerisinde trapleri bulunduran bir nesne
  • traps : nesnenin propertylerine veya value’larına ulaşmamızı sağlayan metotlar
  • target: üzerinde proxy ile işlemler yapacağım nesne (fonksiyon veya array de olabilir.)

Proxy kendisine parametre olarak iki değer alır. Bunlardan ilki üzerinde işlem yapılacak olan nesnedir yani target, ikincisi ise trap adı verilen nesne üzerinde değişiklik yapabildiğimiz metotları içerisinde barındıran handler kısmıdır.

Proxy sayesinde objeler üzerinde yapabildiğimiz önemli işlerden biri ise validation. Şimdi aşağıdaki kod parçasında bunu nasıl yaptığımıza bakalım.

Yukarıdaki örnekte person nesnesine property olarak age eklenmek istendiğinde ona atanan value değerinin integer olmasını veya sıfırdan küçük olmamasını istediğimiz bir senaryoyu ele aldım. Burada da görüldüğü gibi biz person nesnesine set trapiyle eklenmek istenen propertyleri ve value’ları yakalayabildik. Ardından bunlar üzerinde işlemler yaparak string olarak veya sıfırdan küçük olarak atanmak istenen age propertylerinin eklenmesini engellemeyi başardık.

Şimdi ise get trapiyle bir objenin o property adına sahip olup olmadığını kontrol edelim.

Get trapi o nesnenin propertylerini okumak istediğimizde çalışır. Burada person nesnesinin sahip olmadığı surname property’si okunmak istendiğinde ekrana ‘This property does not exist’ hatası basılacaktır.

Son olarak set trapini kullanarak oluşturduğumuz nesneye push property’si ile ekleme işlemini nasıl yapacağımıza bakalım. Aslında array.push işlemindeki gibi burada da proxy_person.push diyerek person nesnesine ekleme yapacağız.

Yukarıdaki örnekte push property ismini yakalayarak ve ‘_’ yardımıyla value üzerinde işlem yapılıp basit bir şekilde nesneye push işlemi yapılmış oldu.

Proxy kullanımı durumunda bize yardımcı olabilecek birçok trap vardır. Bu konu hakkında daha fazla bilgi için buraya tıklayabilirsiniz.

Sign up to discover human stories that deepen your understanding of the world.

Free

Distraction-free reading. No ads.

Organize your knowledge with lists and highlights.

Tell your story. Find your audience.

Membership

Read member-only stories

Support writers you read most

Earn money for your writing

Listen to audio narrations

Read offline with the Medium app

No responses yet

Write a response