JavaScript’te “Implicit Binding” Kavramı

JavaScript’te “implicit binding” kavramı, bir fonksiyonun this değerinin çağrıldığı bağlama göre otomatik olarak belirlenmesi durumudur.

“Implicit Binding”

Bir objenin metodu olarak çağrılan fonksiyonun this değeri, o metodun bizzat ait olduğu obje olacaktır. Ne demek istediğimiz aşağıdaki örneği incelediğinizde daha anlaşılır olacaktır diye düşünüyorum. Bakınız:

Yukarıdaki örnekte, greet fonksiyonunun this değeri, fonksiyonun çağrıldığı objeye, yani bizzat obj‘ye bağlanmıştır. İşte bu, “implicit binding” kavramının ta kendisidir.

JavaScript motoru bunu belirleyebilmek için fonksiyonun çağrıldığı yeri (call site) inceler. “Call site”, bir fonksiyonun çağrıldığı konumdur ve this değeri fonksiyonun çağrıldığı obje olarak otomatik olarak atanır.

Yukarıdaki örneğimizde fonksiyonun çağrıldığı yer, obj.greet() satırıdır. JavaScript motoru bu satıra bakar ve greet fonksiyonunu çağıran objeyi (obj) bulur. Ardından da greet fonksiyonunun içindeki this değerini obj olarak atar.

Bu türden bir bağlama otomatik bir şekilde gerçekleştiği için avantajlıymış gibi görünse de, kodun tahmin edilebilirliğini azalttığı için haliyle istenmeyen sonuçlar ortaya çıkabilir. Örneğin, bir fonksiyonu başka bir değişkene atarsanız ve sonra bu değişkeni çağırırsanız, this değeri orijinal objeye bağlı olmayabilir. Genellikle bu tür durumlardan kaçınmak için yardımcı metotlardan, yani explicit binding kavramından yararlanırız.

İlgili Makaleler

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Başa dön tuşu