2016-04-19 21 views
7

Ho trovato due modi di usare Javascript del nativo bind come la migrazione di distanza dal jQuery.proxy():Qual è la corretta sintassi del bind JavaScript?

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

e

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

Per quanto posso dire, entrambi fanno lo stesso cosa, ma sono preoccupato che quest'ultimo potrebbe causare problemi nel (o qualsiasi funzione al suo posto). La sintassi precedente è quella a cui sono abituato da $.proxy(), e per me sembra che sia esplicitamente vincolante per il gestore, quindi sono propenso ad usare quella sintassi.

Queste due linee stanno effettivamente facendo la stessa identica cosa? E se no, qual è l'opzione più sicura?

+4

hai provato il secondo? ha fatto quel wok? non stanno facendo la stessa cosa di sicuro –

+0

sì come ho affermato che entrambi fanno la stessa cosa nel mio caso –

+3

https://jsfiddle.net/arunpjohny/mr1zw9z0/1/ - Io non la penso così, non sono nemmeno chiudi –

risposta

7

Nel primo caso:

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

Il nativo bind viene invocato, e funzionerà come previsto.

Nel secondo caso,

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

Procedimento jQuery on() restituirà un oggetto jQuery per cui gli eventi dove legati, e quando si chiama bind() su un oggetto jQuery, viene richiamato jquery metodo bind(), e non fa ciò che fa legare nativo.

+0

Impressionante. Ho pensato di avere un caso speciale in cui i due hanno funzionato allo stesso modo per me. Completamente dimenticato del legame di jquery. –

Problemi correlati