2016-04-19 27 views
7

Ben JavaScript doğal bind kullanmanın iki yolu bulduk:Doğru Javascript bağlama sözdizimi nedir? Ben jQuery.proxy() uzağa göç olarak

this.thing.on(event, someHandler.bind(this)) 

ve

this.thing.on(event, someHandler).bind(this) 

Bildiğim kadarıyla söyleyebilirim, her ikisi de aynı şeyi Bir şey, ama ikincisi on() (veya onun yerine herhangi bir işlev) sorunlara neden olabilir endişeleniyorum. Eski sözdizimi, $.proxy()'dan alışık olduğum şeydir ve bana açıkça işleyiciye bağlandığı anlaşılıyor, bu yüzden sözdizimini kullanmaya başladım.

Bu iki çizgi aslında aynı şeyi yapıyor mu? Ve değilse, hangisi daha güvenli bir seçenek? İlk durumda

+4

İkincisini denediniz mi? Bunu yaptın mı? onlar da aynı şey yapıyor değil –

+0

evet ben de benim her ikisi de aynı şeyi benim durumumda yaptım dediğim gibi –

+3

https://jsfiddle.net/arunpjohny/mr1zw9z0/1/ - Ben sanmıyorum, onlar bile close –

cevap

7

:

this.thing.on(event, someHandler.bind(this)) 

yerli bind çağrılır ve Beklediğiniz şekilde çalışacağız. İkinci durumda

,

this.thing.on(event, someHandler).bind(this) 

bir jQuery nesne üzerinde bind() çağırdığınızda bağlı olaylar, jquery bind() yöntemi çağrılan edildiği bir jQuery nesnesi döndürür jQuery on() yöntemi ve yerel bağlama ne yaparsa yapmaz.

+0

Awesome. İki kişinin benim için de aynı şekilde çalıştığı özel bir durumun olduğunu düşündüm. Jquery'nin bağını tamamen unutmuşum. –

İlgili konular